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

前端之家收集整理的这篇文章主要介绍了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]

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

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

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

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

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

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

猜你在找的Java相关文章