【问题标题】:Using JAVA NIO framework in SPRING server在 SPRING 服务器中使用 JAVA NIO 框架
【发布时间】:2010-09-21 09:32:42
【问题描述】:

我正在实现一个混合了 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】:

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

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

    让你的socket服务器成为一个spring bean,并使用如下所示的init方法来实际启动socket服务器。这个 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>
    

    【讨论】:

      猜你喜欢
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多