【问题标题】:Java EE architecture: separate war for adaptersJava EE 架构:适配器的单独战争
【发布时间】:2013-03-05 17:05:27
【问题描述】:

架构问题: 我有一个 Java EE 企业应用程序,旨在部署给许多不同的客户。它包括:

  • 标准后端:为每位客户提供相同的核心
  • EAI 适配器的单独模块:旨在包含所有客户特定的集成(财务、CRM、ERP 等) - 为每个客户提供不同的实施

我可以看到 2 个选项:

  • 只有一个 backend-cust1.ear,其中包含 core.jar 和 adapter-cust1.jar。
  • 适配器的单独 WAR。所以我们会有:只有 core.jar 的 backend.ear,即为每个客户提供相同的交付和一个单独的适配器-cust1.war。

问题在于,在第一个解决方案中,核心可以通过简单的 java 方法调用来调用适配器,客户特定的实现可以注入一些 CDI 代码。

但是对于第二种解决方案,我们需要一些远程技术来在核心和适配器之间进行通信:例如 JMS 或 WS。在我看来,这是一种相当沉重的方式。

但我们认为适配器可能依赖于任何东西(MQ、SAP 客户端,实际上任何东西),我们希望确保这些依赖关系不会以任何方式影响我们的公共核心,这就是为什么我们考虑有一个单独的战争。

对此有什么想法吗?

【问题讨论】:

    标签: jakarta-ee architecture war ear eai


    【解决方案1】:

    我看到了两种好方法:

    • Java EE Connector - 它将允许创建托管连接、事务等,但旧且不流行
    • OSGI - 将通过可能的 jar hell、模块及其接口解决您的问题,更好

    【讨论】:

      【解决方案2】:

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

      例如,如果是 EJB: WebSphere 7. Inject EJB from another application

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

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

      祝你好运

      【讨论】:

        猜你喜欢
        • 2017-03-07
        • 2014-04-02
        • 1970-01-01
        • 1970-01-01
        • 2017-06-28
        • 2022-11-10
        • 2013-08-02
        • 2014-12-18
        • 1970-01-01
        相关资源
        最近更新 更多