架构问题:我有一个 Java EE 企业应用程序,目标是部署给许多不同的客户。它包括:
- 标准后端:为每个客户提供相同的核心
- 用于 EAI 适配器的单独模块:旨在包含所有客户特定的集成(财务、CRM、ERP 等) - 为每个客户提供不同的实施
我可以看到 2 个选项:
- 只有一个 backend-cust1.ear,其中包含 core.jar 和 adapter-cust1.jar。
- 适配器的单独 WAR。因此,我们将拥有:backend.ear 仅包含 core.jar,即为每个客户提供相同的交付方式和单独的适配器-cust1.war。
问题在于,使用第一个解决方案,核心可以通过简单的 java 方法调用来调用适配器,客户特定的实现可以注入一些 CDI 代码。
但是对于第二种解决方案,我们需要一些远程技术来在核心和适配器之间进行通信:例如 JMS 或 WS。在我看来,这是一种相当沉重的方式。
但是我们认为适配器可能依赖于任何东西(MQ、SAP 客户端,实际上是任何东西),我们希望确保这些依赖关系不会以任何方式影响我们的公共核心,这就是我们考虑进行单独战争的原因。
对此有什么想法吗?