Kat*_*ate 5 java sockets service daemon java-ee
我是Java EE世界的新手.作为一个尝试熟悉Java EE的练习,我正在尝试创建一个分层的Web应用程序,但我有点卡在最好的方法是在后台启动服务工作.
服务参数:
因此,想法是用户按下网页上的按钮,并在服务器上的某个位置打开套接字连接.对于剩余的用户会话(或者直到用户按下某种断开按钮),套接字保持打开状态并将接收的信息推送到某种集中式存储,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]
Run Code Online (Sandbox Code Playgroud)
管道 | 表示远程边界。假设 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理论上您不应该使用字段。但实际上,如果您的应用程序只有一个实例在运行,那么这种方法是有效的。
这只是一个粗略的草图,但我希望它能有所帮助。