在SPRING服务器中使用JAVA NIO框架 [英] Using JAVA NIO framework in SPRING server

查看:314
本文介绍了在SPRING服务器中使用JAVA NIO框架的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm implementing an hybrid server application that mixes a Web-Servlet and a plain Java application.

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

The java application manages thousands of sockets for remote devices, while the Web application interacts with the user to set/read the state of any socket. Java NIO, or Apache-MINA vs Jboss-Netty, seems to be good options for the sockets application.

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

The first question is, can I run both applications (Servlet with web interface + JAVA NIO application) in the same server? I'am using now Tomcat for the Servlet and a plain procrun daemon for the socket-application

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

I don't know if Spring is suitable for this combination, since I haven't seen any information about using NIO in Spring.

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

The second question is, how can both applications communicate between them? For the moment I'am using RMI but I wonder if there is a better solution.

推荐答案

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

You can definitely run a NIO socket server and a web server in the same jvm using Spring. I have done it using Grails (which is a wrapper over spring anyway). I start the tcp server in the bootstrap class of Grails.

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

For normal spring web app, you can start the socket server listening at a particular port, say 8090 and the web server at say 8080 using spring framework lifecycle listeners or post processors.

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

Make your socket server to be a spring bean and use the init-method as shown below to actually start the socket server. Ths spring framework will automatically call it on bean instantiation.

网购服务器的示例配置如下:

An example configuration for a netty server could be like below:

<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>

这篇关于在SPRING服务器中使用JAVA NIO框架的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆