Cla*_* Ku 3 spring nio rmi apache-mina netty
我正在实现混合Web-Servlet和普通Java应用程序的混合服务器应用程序.
Java应用程序管理远程设备的数千个套接字,而Web应用程序与用户交互以设置/读取任何套接字的状态.Java NIO或Apache-MINA vs Jboss-Netty似乎是套接字应用程序的不错选择.
第一个问题是,我可以在同一台服务器上运行这两个应用程序(带Web界面的Servlet + JAVA NIO应用程序)吗?我现在使用Tomcat作为Servlet,并使用普通的procrun守护进程来实现套接字应用程序
我不知道Spring是否适合这种组合,因为我还没有看到任何关于在Spring中使用NIO的信息.
第二个问题是,两个应用程序如何在它们之间进行通信?目前我正在使用RMI,但我想知道是否有更好的解决方案.
Abe*_*Abe 10
您绝对可以使用Spring在同一个jvm中运行NIO套接字服务器和Web服务器.我使用Grails(无论如何都是弹簧包装)完成了它.我在Grails的bootstrap类中启动tcp服务器.
对于普通的Spring Web应用程序,您可以使用spring框架生命周期监听器或后处理器启动在特定端口(例如8090)和Web服务器(例如8080)上侦听的套接字服务器.
使您的套接字服务器成为一个spring bean,并使用如下所示的init-method来实际启动套接字服务器.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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10596 次 |
| 最近记录: |