侦听套接字请求的EAR(JavaEE)应用程序
我希望构建一个JavaEE应用程序(EAR),它不仅提供web服务(WAR)或直接JMS请求(EJB),而且还希望接受套接字请求(例如UDP数据包) 我尝试用java.net.DatagramSocket编写一个侦听器,让它作为单独的进程运行,并将请求重定向到我的EAR应用程序 问题是。。 如何将这样的套接字侦听器无缝地构建到JavaEE(EAR)应用程序中侦听套接字请求的EAR(JavaEE)应用程序,java,sockets,jakarta-ee,Java,Sockets,Jakarta Ee,我希望构建一个JavaEE应用程序(EAR),它不仅提供web服务(WAR)或直接JMS请求(EJB),而且还希望接受套接字请求(例如UDP数据包) 我尝试用java.net.DatagramSocket编写一个侦听器,让它作为单独的进程运行,并将请求重定向到我的EAR应用程序 问题是。。 如何将这样的套接字侦听器无缝地构建到JavaEE(EAR)应用程序中 谢谢。据我所知,它不符合规范。所有内容都应该由容器控制,因为这是使用Java EE实现缩放应用程序的唯一方法 有几个选择: 实现一个连接
谢谢。据我所知,它不符合规范。所有内容都应该由容器控制,因为这是使用Java EE实现缩放应用程序的唯一方法 有几个选择:
- 实现一个连接器(JCA)这里有一个例子:如果您有现有客户机,这可能是最好的方法
- 使用Java消息队列 这里讨论了这两种技术之间的关系
- 写入在数据库中存储请求的外部服务器。(不支持发送)
- 如果您只有一台服务器,而且开销太大,那么您可以忽略这些方面。但是,如果以后需要事务或其他节点,则必须重新设计此部分
- 适配器启动套接字侦听器并管理来自远程客户端的连接
- 当收到一个数据包时,一条消息被传递到一个自定义MDB
- 然后MDB可以将处理委托给其他EJB
- 正确的方法是为此创建一个JCA适配器。JCA适配器可用于出站或入站连接。您可以在JCA适配器中启动线程或安排工作。从JCA适配器到EJB的入站连接是使用自定义消息驱动bean完成的
ServletContextListener
启动侦听套接字的线程。线程将在web层运行,您可以像往常一样调用EJB。依赖项注入将不起作用,但JNDI查找应该仍然可以