在我的企业应用程序中,我试图将 Web 层与 EJB 层分开,并将相应的文件(jar 和 war)部署在两个单独的服务器上。因为我不想为每个访问我的应用程序的用户打开一个数据库会话,所以我有一个支持 bean,它将我的数据库中的数据表示存储在内存中。每次用户访问应用程序时,他只能看到支持 bean 的这些数据。
现在我遇到的问题是,每当对数据库进行更改时,我都必须更新这些数据。到目前为止,我为此使用了 CDI 事件。当进行更改时,EJB 将仅抛出 CDI 事件,并且支持 bean 侦听这些事件并创建数据库会话并更新其内容。
现在我想在不同的机器上部署 Web 应用程序和 EJB 模块,这可能不再起作用,因为 CDI 事件仅限于同一只耳朵。我已经尝试将我的整个耳朵模块部署到一台服务器上,即使这样事件也没有被支持 bean 注册,这很奇怪,因为这应该可以正常工作......
所以现在我的问题是:除了使用 JMS 来更新支持 bean 数据之外,还有其他方法吗?我相信这不是一个奇特的用例,但我找不到任何关于如何处理这个问题的信息。