0

在我的企业应用程序中,我试图将 Web 层与 EJB 层分开,并将相应的文件(jar 和 war)部署在两个单独的服务器上。因为我不想为每个访问我的应用程序的用户打开一个数据库会话,所以我有一个支持 bean,它将我的数据库中的数据表示存储在内存中。每次用户访问应用程序时,他只能看到支持 bean 的这些数据。

现在我遇到的问题是,每当对数据库进行更改时,我都必须更新这些数据。到目前为止,我为此使用了 CDI 事件。当进行更改时,EJB 将仅抛出 CDI 事件,并且支持 bean 侦听这些事件并创建数据库会话并更新其内容。

现在我想在不同的机器上部署 Web 应用程序和 EJB 模块,这可能不再起作用,因为 CDI 事件仅限于同一只耳朵。我已经尝试将我的整个耳朵模块部署到一台服务器上,即使这样事件也没有被支持 bean 注册,这很奇怪,因为这应该可以正常工作......

所以现在我的问题是:除了使用 JMS 来更新支持 bean 数据之外,还有其他方法吗?我相信这不是一个奇特的用例,但我找不到任何关于如何处理这个问题的信息。

4

1 回答 1

0

您没有指定您使用的 Java EE 版本 - 但如果它是 7,那么您手头就有WebSocket API您将在Oracle WebLogic 12 文档中找到一个非基于浏览器的客户端端点与服务器端点对话的示例。

或者,您可以在您的 Web 应用程序中实现一个RESTful Web 服务,该服务由您的业务应用程序调用以通知您更新。

于 2014-07-17T11:32:23.440 回答