一个侦听套接字请求的EAR(Java EE)应用程序

rnd*_*gen 9 java sockets java-ee

我想构建一个Java EE应用程序(EAR),它不仅提供Web服务(WAR)或直接JMS请求(EJB),而且我还想接受套接字请求(例如UDP数据包).

我尝试用java.net.DatagramSocket编写一个监听器,让它作为单独的进程运行,并将请求重定向到我的EAR应用程序.

问题是..如何无缝地将这样的套接字侦听器构建到我的Java EE(EAR)应用程序中?

谢谢.

ewe*_*nli 11

正确的做法是创建一个JCA适配器为.JCA适配器可用于出站入站连接.您可以在JCA adpater中启动线程或安排工作.从JCA适配器到EJB 的入站连接是使用自定义消息驱动的bean完成的.

  • 适配器启动套接字侦听器并管理来自远程客户端的连接
  • 收到数据包时,会将消息传递给自定义MDB
  • 然后,MDB可以将处理委托给其他EJB

您甚至可以从JCA连接器启动事务,以便交换消息/数据包到EJB的传递.JCA是Java EE规范的一部分,并受所有应用程序服务器的支持.

另一种方法(但不符合规范)是启动从a监听套接字的线程ServletContextListener.该线程将在Web层中运行,您可以像往常一样调用EJB.依赖注入不起作用,但JNDI查找应该仍然可以.