0

架构问题:我有一个 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 客户端,实际上是任何东西),我们希望确保这些依赖关系不会以任何方式影响我们的公共核心,这就是我们考虑进行单独战争的原因。

对此有什么想法吗?

4

2 回答 2

0

我看到两个好方法:

  • Java EE 连接器- 它允许创建托管连接、事务等,但旧且不流行
  • OSGI - 将用可能的 jar hell、模块和他们的接口解决你的问题,更好
于 2013-03-05T21:46:25.613 回答
0

您应该能够从其他 EAR 注入“需要的类”/组件/模块。所有 Java EE 应用程序服务器都支持这一点。

例如,如果是 EJB: WebSphere 7. 从另一个应用程序注入 EJB

在其他情况下,指定项目依赖项应该可以解决问题。

在架构上,ESB 听起来更适合这里。但在我看来,理想情况下您不需要 ESB,因为您将只有一个客户集成。

祝你好运

于 2013-03-11T11:12:54.100 回答