【问题标题】:ATG Nucleus - EJB RelationshipATG Nucleus - EJB 关系
【发布时间】:2015-01-20 00:05:25
【问题描述】:

我对 ATG 和 EJB 都不是很熟悉,对后者只有一个粗略的概念。刚开始阅读有关 ATG 的信息,似乎它的一个组件(即 Nucleus)使用 EJB。似乎 ATG 中的其他所有内容都基于 Nucleus。 我可能很快就要和 ATG 合作了,所以:

1) ATG Nucleus 和 EJB 有什么关系?
2) 核心 EJB 是否使用通常的 EJB?
3) Nucleus 是否需要 EJB?我可以用其他东西代替吗?
4) Nucleus 是使用 EJB 的全部功能还是在某处替换它?
5) Nucleus 提供的功能可以完全被 EJB 替代吗?
6) 我是否需要学习 EJB 才能使用 Nucleus?它会提高我对 Nucleus 的理解吗?

对不起,如果这些问题很愚蠢,我只是想加快学习速度。

还在维基百科上找到了一篇关于一些 DataNucleus(以前称为 Java Persistent Objects JPOX)的文章。是同一个Nucleus吗?

【问题讨论】:

    标签: java ejb atg


    【解决方案1】:

    Nucleus 不是 EJB,也不使用 EJB。

    Nucleus 是一个 bean 容器,有点类似于 Spring Bean Factory 或 Application Context。

    更具体地说,它是一个注册表和一个容器,用于管理组件的生命周期和组件之间的绑定。

    从这个意义上说,您可能会认为它类似于 EJB 容器,但要简单得多。

    它管理的组件是简单的 JavaBeans (POJO),尽管惯例规定它们通常是 ATG 提供的类(例如 GenericService)的子类。

    当您打包一个 ATG 应用程序时,它会被组装成一个 EAR。

    当此 EAR 在 Java EE 应用程序服务器中部署和实例化时,启动的是 Nucleus。反过来,Nucleus 实例化它负责的组件。

    您可以将应用程序与 EJB 一起打包,并且可以将其他 EAR 部署到同一应用程序服务器中,但这些不是 ATG 应用程序。这些不使用 Nucleus,反之亦然。

    所以,回答你的问题

    1) ATG Nucleus 和 EJB 是什么关系?

    无。

    2) 核心 EJB 是否使用通常的 EJB?

    没有。 Nucleus 不使用 EJB。它使用 POJO

    3) Nucleus 是否需要 EJB?

    没有。

    我可以用其他东西代替吗?

    是的。我建议您使用 ATG 提供的基类,然后扩展您需要的组件或根据需要创建新组件

    4) Nucleus 是使用 EJB 的全部功能还是在某处替换它?

    它几乎在所有方面都取代了它。

    Nucleus 既是一个注册表,也是一个组件容器。 Nucleus 管理的每个组件在 Nucleus 命名空间中都有一个唯一的名称。 Nucleus 通过 JNDI 和 Java 名称解析 API 方法公开这些组件。

    您还可以将 Nucleus 组件公开为 Web 服务 (SOAP) 和 REST 服务(JSON over HTTP)。 ATG 作为一个平台(技术上不是 Nucleus,而是 ATG 提供的在 Nucleus 中运行的组件)还提供了一个消息驱动的事件框架,用于通过 JMS 开发消息驱动的逻辑。

    此外,ATG 平台(同样不是 Nucleus,而是 ATG 提供的在 Nucleus 内运行的组件)提供了一个作为 ORM 层的 Repository 框架,但不仅适用于关系数据库数据源,还适用于 LDAP、XML 和其他文件数据源。

    5) Nucleus 提供的功能可以完全被 EJB 替代吗?

    在技术层面,是的。

    但是,EJB(尤其是在 EJB3 之前)非常笨重并且看起来过于复杂。依赖注入、托管实体 (ORM) 等只是 ATG 的工作量少得多,在其他一些框架(Spring Hibernate 等)中也是如此。

    此外,ATG 作为一个平台(同样,在技术上不仅仅是 Nucleus),为个性化和商务提供了许多复杂的业务功能。

    6) 我是否需要学习 EJB 才能使用 Nucleus?

    没有。完全没有

    它会提高我对 Nucleus 的理解吗?

    是的。但仅限于非常有限的方式。任何学习或理解都是从已知到未知的旅程。已知的基础越大,越容易走向未知,因为你有更多的起点。

    如果您已经非常了解 Java EE,那么您将能够了解 ATG 平台在幕后所做的事情,从而更容易理解它。但是,如果你根本不了解 EJB,那么为了更好地理解 ATG 而学习它实际上会产生不利影响。

    另一方面,我认为您必须了解并理解 Java EE Web 应用程序(JSP、Servlet、过滤器等)才能最好地使用 ATG。

    还在维基百科上找到了一篇关于一些 DataNucleus(以前称为 Java Persistent Objects JPOX)的文章。是同一个Nucleus吗?

    没有。完全不相关

    【讨论】:

      【解决方案2】:

      除非您排除 DafEar 模块,否则 ATG 会在其汇编程序生成的每个 ear 中打包一个无状态会话 EJB。 DafEar EJB 是 ATG 中跨应用程序会话功能所必需的,包括 dyn/admin Web 控制台和 ACC。

      每个 ATG EAR 由多个 war 文件和一个 EJB jar 文件组成。您可以在 ATG 汇编程序生成的任何耳朵中看到 EJB jar 并被其引用:

      atg_foo.ear/META-INF/application.xml:

      <module>
          <ejb>atg_bootstrap_ejb.jar</ejb>
      </module>
      

      EJB 在应用程序组装时来自用于构建 ear 的 ATG 安装的 DafEar 模块,例如:${ATG_HOME}/DafEar/base/j2ee-components/

      可以在没有 EJB 但没有 dyn/admin 和 ACC 的情况下构建 ATG ear。在某些情况下,例如 BCC/merch,排除 DafEar 并访问 dyn/admin 中的关键管理组件(例如 DeploymentServer)太不切实际了,因此 DafEar 最常部署在 ATG / Oracle Commerce 应用程序中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-11
        • 1970-01-01
        • 1970-01-01
        • 2012-02-15
        • 2013-12-31
        相关资源
        最近更新 更多