Java ATG Nucleus-EJB关系

Java ATG Nucleus-EJB关系,java,ejb,atg,Java,Ejb,Atg,尼瑟对ATG和EJB都不太熟悉,只是对后者有一个粗略的概念。我刚刚开始阅读ATG,它的一个组件(即Nucleus)似乎使用EJB。看起来ATG中的其他所有东西都是基于Nucleus的。 我可能很快就要和ATG合作了,所以: 1) ATG Nucleus和EJB之间的关系是什么? 2) nucleus的EJB是否使用普通EJB? 3) Nucleus是否需要EJB?我可以用别的东西吗? 4) Nucleus是否使用了EJB的全部功能,还是在某处取代了它? 5) EJB能否完全取代Nucleus提供

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

1) ATG Nucleus和EJB之间的关系是什么?
2) nucleus的EJB是否使用普通EJB?
3) Nucleus是否需要EJB?我可以用别的东西吗?
4) Nucleus是否使用了EJB的全部功能,还是在某处取代了它?
5) EJB能否完全取代Nucleus提供的功能?
6) 我需要学习EJB才能使用Nucleus吗?它会提高我对Nucleus的理解吗

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


我还发现了一篇关于wikepedia上的一些DataNucleus(以前称为Java持久对象JPOX)的文章。是同一个Nucleus吗?

Nucleus不是EJB,也不使用EJB

Nucleus是一个bean容器,有点类似于SpringBean工厂或应用程序上下文

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

在这个意义上,您可以认为它与EJB容器类似,但它不那么复杂。 它管理的组件是SimpleJavaBeans(POJO),尽管按照惯例,它们通常是ATG提供的类(如GenericService)的子类

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

在JavaEE应用服务器中部署和实例化此EAR时,启动的是Nucleus。Nucleus依次实例化它负责的组件

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

那么,来回答你的问题

1) ATG Nucleus和EJB之间的关系是什么

没有

2) nucleus使用普通EJB的EJB吗

否。Nucleus不使用EJB。它使用POJO

3) Nucleus是否需要EJB

没有

我可以用别的东西代替吗

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

4) Nucleus是否使用了EJB的全部功能,还是在某个地方取代了它

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

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

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

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

5) EJB能否完全取代Nucleus提供的功能

在技术层面上,是的

然而,EJB(特别是在EJB3之前)非常笨重,看起来过于复杂。依赖注入、托管实体(ORM)等在ATG和其他一些框架(SpringHibernate等)中的工作量要小得多

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

6) 我需要学习EJB才能使用Nucleus吗

不,一点也不

它会提高我对Nucleus的理解吗

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

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

另一方面,我认为您必须了解和理解JavaEEWeb应用程序(JSP、servlet、过滤器等),才能最好地使用ATG

我还发现了一篇关于wikepedia上的一些DataNucleus(以前称为Java持久对象JPOX)的文章。是同一个核吗


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

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

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

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

atg_bootstrap_ejb.jar
EJB在应用程序组装时来源于ATG安装中用于构建ear的DafEar模块,例如:${ATG_HOME}/DafEar/base/j2ee组件/

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