我正在 WebLogic 10.3.5 上编写我的第一个 Java EE 5 应用程序。并且需要一些架构建议。
当应用程序启动时,我需要打开到 XMPP 服务器的持久连接以发送即时消息。消息将不断地从表格中提取,该表格将由应用程序的另一部分填充。
正如我所看到的,我不能为此使用容器管理的对象,例如 EJB,因为这样我就无法控制对象和套接字连接的生命周期。
Servlet 是否适合以应用程序开头并持有持久套接字连接的进程?
我正在 WebLogic 10.3.5 上编写我的第一个 Java EE 5 应用程序。并且需要一些架构建议。
当应用程序启动时,我需要打开到 XMPP 服务器的持久连接以发送即时消息。消息将不断地从表格中提取,该表格将由应用程序的另一部分填充。
正如我所看到的,我不能为此使用容器管理的对象,例如 EJB,因为这样我就无法控制对象和套接字连接的生命周期。
Servlet 是否适合以应用程序开头并持有持久套接字连接的进程?
看起来您将使用 Markus Eisele 在他的博文中列出的选项之一。提到了应用程序生命周期侦听器的特定于 Weblogic 的机制(但它不是纯 Java EE)。
我通过创建实例化 EJB 3.0 无状态会话 bean 的 ServletContextListener 解决了这个问题。
然后会话 bean 使用 @PostConstruct 方法实例化 XMPP 连接并使用 @PreDestroy 方法关闭连接。
我让会话 bean 使用 EJB 3.0 计时器每隔几分钟轮询一次消息队列表。