Вы точно можете запустить сервер сокетов NIO и веб-сервер в одном и том же jvm с помощью Spring.Я сделал это с помощью Grails (который в любом случае является оберткой над весной).Я запускаю tcp-сервер в классе начальной загрузки Grails.
Для обычного весеннего веб-приложения вы можете запустить сервер сокетов, прослушивающий определенный порт, скажем, 8090, и веб-сервер, скажем,8080 с использованием прослушивателей жизненного цикла Spring Framework или постпроцессоров.
Сделайте ваш сервер сокетов пружинным компонентом и используйте метод init, как показано ниже, чтобы фактически запустить сервер сокетов.Эта среда Spring автоматически вызовет его при создании экземпляра.
Пример конфигурации для сервера netty может быть следующим:
<bean id="tcpServer" class="netty.NettyTCPServer"
init-method="createServerBootstrap" destroy-method="stopServer">
<property name="pipelineFactory" ref="pipelineFactory"></property>
</bean>
<bean id="pipelineFactory" class="netty.HandshakePipelineFactory">
<lookup-method name="createHandshakeHandler" bean="handshakeHandler" />
<property name="stringDecoder" ref="stringDecoder"></property>
<property name="stringEncoder" ref="stringEncoder"></property>
<property name="nulEncoder" ref="nulEncoder"></property>
<property name="frameSize" value="256"></property>
</bean>