java - 连接到接受套接字连接的 Java EE 应用程序

标签 java sockets jakarta-ee

我有一个在 Tomcat 上运行的 Java EE 应用程序,需要连接到在 JBoss 上运行的另一个 Java EE 应用程序(主机系统),该应用程序使用套接字接受客户端连接。

连接到该系统以发送和接收消息的最佳方式是什么?

我目前正在使用套接字向 Java EE 应用程序(主机系统)发送和接收消息。但我在 Java EE 规范中发现,在 Java EE 应用程序中使用套接字是一种不好的做法。由于主机系统正在通过特定端口上的套接字监听客户端,因此我如何从我的 Java Web 应用程序连接到该系统?

最佳答案

没有更多关于如何与主机系统通信的细节,我只是假设它使用专有的、基于套接字的二进制协议(protocol),并且是纯粹的客户端-服务器(即,不是全双工,您需要一个监听器客户端)。

我突然想到了几个选项:

  1. 使用原始套接字。只要确保不要让它们打开太久并正确关闭它们即可。听起来主机系统本身确实没有严格遵循 Java EE 建议,那么为什么要这样做呢?

  2. 写一个JCA resource adapter . Java EE 处理自定义/遗留资源或消息传递的“首选”方式。本质上,这将主机系统变成可通过Common Client Interface访问的资源。 ,并让容器管理套接字/线程的生命周期。

但是,为了简单起见并且不要过度设计,我说如果原始套接字适合您,那么就使用它们,直到被迫为止。

除非您看到通过 JCA 提供定制服务的值(value),否则很难证明这一努力的合理性。

您甚至可以使用 ESB 平台在一端公开 Web 服务,并通过另一端的套接字与服务器通信,但对我来说,这只是更加“意外”的复杂性。

关于java - 连接到接受套接字连接的 Java EE 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6924172/

相关文章:

java - 在数据流2.3.0中使用谷歌 Spanner

java - Maven Web 项目未加载 spring 上下文 xml 文件

python-3.x - 错误:can.socketcan.ctypes:Setting filters failed -1 Find out the can error frame

java - "Software caused connection abort: socket write error"的官方原因

c - c 中的 setTimeOut 等价物?

file - 部署war文件而不是展开目录有什么好处?

java - 我的代码中的 NumberFormatException

java - Velocity 模板引擎如何用于 Java Web 应用程序中的 View ?

java - 在java中打印一个变量n次

带有 Java 9 和 ClassPath 的 javax.smartcardio