在我的企业应用程序中,我正在尝试将Web层与EJB层分开,并在两个单独的服务器上部署相应的文件(jar和war)。由于我不想为每个访问我的应用程序的用户打开数据库会话,因此我有一个支持bean,它将数据的表示存储在我的数据库中。每次用户访问应用程序时,他只会看到辅助bean的这些数据。
现在我遇到的问题是,只要对数据库进行了更改,我就必须更新这些数据。到目前为止,我使用了CDI事件。当进行更改并且支持bean监听这些事件并创建数据库会话并更新其内容时,EJB将仅抛出CDI事件。
现在我想在不同的机器上部署Web应用程序和EJB模块,这可能不再适用,因为CDI事件仅限于同一个耳朵。我已经尝试将我的整个耳模块部署到一个服务器上,即使这样,事件也没有被支持bean注册,这很奇怪,因为这应该正常工作......
所以现在我的问题是:除了使用JMS更新支持bean数据之外还有其他方法吗?我相信这不是一个奇特的用例,但我找不到任何有关如何处理这个问题的信息。
答案 0 :(得分:0)
您没有指定您正在使用的Java EE版本 - 但如果它是7,那么您手头有WebSocket API。您将找到一个基于非浏览器的Client Enpoint与Oracle WebLogic 12 documentation中的服务器端点通话的示例。
或者,您可以在Web应用程序中实现RESTful Web Service,您的业务应用程序会调用该应用程序以通知您更新。