gpt4 book ai didi

java - Java EE 新手;服务/守护进程的架构建议?

转载 作者:搜寻专家 更新时间:2023-10-31 20:16:09 25 4
gpt4 key购买 nike

我是 Java EE 世界的新手。作为尝试和熟悉 Java EE 的练习,我正在尝试创建一个分层的 Web 应用程序,但我对在后台启动服务的最佳方法有点困惑。

服务参数:

  • 它必须打开并保持套接字连接并从连接的服务器接收信息。
  • 用户和新套接字连接之间存在一对一的关联。

所以这个想法是用户在网页上按下一个按钮,然后在服务器上的某个地方打开一个套接字连接。对于用户 session 的其余部分(或直到用户按下某种断开连接按钮),套接字保持打开状态并将接收到的信息推送到某种集中存储,servlet 可以通过 AJAX 查询并返回给用户。

是否有 Java EE 类型的方法来处理这种情况?很自然地,我想做的就是编写一个 Java 应用程序,该应用程序监听 servlet 可以连接到的端口并生成打开这些套接字的新线程,但这对我来说似乎非常临时。

(PS:我也是 Stack Overflow 的新手,所以如果我需要一些时间来弄清楚这个网站,请原谅我!)

最佳答案

Java EE 堆栈中有三个主要容器:Web 容器、EJB 容器和 JCA 容器。 JCA 旨在提供与第三方系统(例如数据库、JMS 代理或其他系统)的入站和出站连接。

从 EJB 或 Web 应用程序创建到 Telnet 服务器的连接的“正确”方法是为此使用 JCA 连接器。

[client] <-|-> [web] <--> [ejb] <--> [jca] <-|-> [telnet server]

管道 |表示远程边界。 A 假定 EJB 是本地的,但无论如何它们都是可选的;您也可以从 Web 层使用 JCA 连接器。

我建议您调查是否存在现有实现。快速谷歌给了我这个结果:JCA connector for Telnet client .

另一种方法(但不符合规范)是启动从 ServletContextListener 监听套接字的线程。该线程将在 web 层运行,您可以根据需要管理与 Telnet 服务器的连接。

我建议您也看看这个其他 SO 问题:Java EE application that listens to a socket .

在这两种情况下,您可能需要弄清楚如何临时存储 Telnet 服务器(您提到的集中存储)收到的信息,这些信息稍后将显示在 Web 界面中。这在 Java EE 中又是一个问题,因为规范禁止使用全局状态。例如,理论上你不应该使用 static 字段。但在实践中,如果您的应用程序只有一个实例在运行,那么这种方法是有效的。

这只是一个粗略的草图,但我希望它能有所帮助。

关于java - Java EE 新手;服务/守护进程的架构建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2998926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com