Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
侦听套接字请求的EAR(JavaEE)应用程序_Java_Sockets_Jakarta Ee - Fatal编程技术网

侦听套接字请求的EAR(JavaEE)应用程序

侦听套接字请求的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实现缩放应用程序的唯一方法 有几个选择: 实现一个连接

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

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

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


谢谢。

据我所知,它不符合规范。

所有内容都应该由容器控制,因为这是使用Java EE实现缩放应用程序的唯一方法

有几个选择:

  • 实现一个连接器(JCA)这里有一个例子:如果您有现有客户机,这可能是最好的方法

  • 使用Java消息队列

    这里讨论了这两种技术之间的关系

  • 写入在数据库中存储请求的外部服务器。(不支持发送)

  • 如果您只有一台服务器,而且开销太大,那么您可以忽略这些方面。但是,如果以后需要事务或其他节点,则必须重新设计此部分

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

      • 适配器启动套接字侦听器并管理来自远程客户端的连接
      • 当收到一个数据包时,一条消息被传递到一个自定义MDB
      • 然后MDB可以将处理委托给其他EJB
      您甚至可以从JCA连接器启动事务,以便处理消息/数据包到EJB的传递。JCA是JavaEE规范的一部分,所有应用服务器都支持JCA

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