在SPRING服务器中使用JAVA NIO框架

问题描述 投票:3回答:1

我正在实现将Web-Servlet和纯Java应用程序混合在一起的混合服务器应用程序。

Java应用程序为远程设备管理数千个套接字,而Web应用程序与用户交互以设置/读取任何套接字的状态。对于套接字应用程序,Java NIO或Apache-MINA vs Jboss-Netty似乎是不错的选择。

第一个问题是,我可以在同一台服务器上同时运行两个应用程序(带Web界面的Servlet和JAVA NIO应用程序吗?)我现在使用Tomcat作为Servlet,并使用普通的procrun守护程序作为套接字应用程序

我不知道Spring是否适合这种组合,因为我没有看到有关在Spring中使用NIO的任何信息。

第二个问题是,两个应用程序之间如何通信?目前,我正在使用RMI,但我想知道是否有更好的解决方案。

java spring netty nio apache-mina
1个回答
10
投票

您绝对可以使用Spring在同一jvm中运行NIO套接字服务器和Web服务器。我已经使用Grails(无论如何都是春天的包装)来完成它。我在Grails的bootstrap类中启动tcp服务器。

对于普通的Spring Web应用程序,您可以开始使用Spring框架生命周期侦听器或后处理器在特定端口(例如8090)和套接字服务器(例如8080)侦听套接字服务器。

使套接字服务器成为spring bean,并使用如下所示的init方法实际启动套接字服务器。这个spring框架将在bean实例化时自动调用它。

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>
© www.soinside.com 2019 - 2024. All rights reserved.