ATG Nucleus - EJB关系

时间:2014-11-21 18:47:50

标签: java ejb atg

我对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的理解吗?

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

还在wikepedia上发现了一篇关于某些DataNucleus(以前称为Java Persistent Objects JPOX)的文章。它是同一个Nucleus吗?

2 个答案:

答案 0 :(得分:4)

Nucleus不是EJB,也不使用EJB。

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

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

从这个意义上讲,您可能会认为它类似于EJB容器,但它的复杂程度要低得多。

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

当您打包ATG应用程序时,它会被组装到EAR中。

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

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

所以,回答你的问题

  

1)ATG Nucleus和EJB之间有什么关系?

无。

  

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

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

  

3)Nucleus是否需要EJB?

没有

  

我可以改用其他东西吗?

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

  

4)Nucleus是否使用EJB的全部功能或将其替换为某个地方?

几乎在所有方面都取而代之。

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

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

此外,ATG平台(同样不是Nucleus,而是在Nucleus内运行的ATG提供的组件)提供了一个存储库框架,它是一个ORM层,但不仅适用于关系数据库数据源,还包括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合作。

  

还在wikepedia上发现了一篇关于某些DataNucleus(以前称为Java Persistent Objects JPOX)的文章。它是同一个Nucleus吗?

没有。这是完全不相关的

答案 1 :(得分:1)

除非排除DafEar模块,否则ATG会在其汇编程序生成的每个ear中打包无状态会话EJB。 ATG中的跨应用程序会话功能需要DafEar EJB,包括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是在app组装时从用于构建耳朵的ATG安装的DafEar模块获取的,例如:$ {ATG_HOME} / DafEar / base / j2ee-components /

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