我对ATG和EJB并不太熟悉,仅对后者有一个粗略的概念。刚开始阅读有关ATG的内容,似乎它的组件之一(即Nucleus)使用EJB。似乎ATG中的其他所有内容都基于Nucleus。
我可能很快就要使用ATG,因此:
1)ATG Nucleus与EJB之间是什么关系?
2)核心的EJB是否使用普通的EJB?
3)EJB对Nucleus是必需的吗?我可以改用其他东西吗?
4)Nucleus是使用EJB的全部功能还是在某个地方替换它?
5)Nucleus提供的功能可以完全被EJB取代吗?
6)我需要学习EJB才能使用Nucleus吗?它会增进我对Nucleus的理解吗?
很抱歉,如果这些问题很愚蠢,我只是想加快学习速度。
还找到了有关wikepedia上的一些DataNucleus(以前称为Java Persistent Objects JPOX)的文章。是同一核吗?
最佳答案
Nucleus不是EJB,并且不使用EJB。
Nucleus是一个bean容器,有点类似于Spring Bean Factory或Application Context。
更具体地说,它是用于管理组件的生命周期和组件之间的绑定的注册表和容器。
从这个意义上讲,您可能会认为它类似于EJB容器,但是复杂性要低得多。
它管理的组件是简单的JavaBean(POJO),尽管约定规定它们通常是ATG提供的类(例如GenericService)的子类。
打包ATG应用程序时,它会组装到EAR中。
在Java EE应用程序服务器中部署并实例化此EAR时,将启动Nucleus。反过来,Nucleus实例化它负责的组件。
您可以将应用程序与EJB打包在一起,也可以将其他EAR部署到同一应用程序服务器中,但这些不是ATG应用程序。这些不使用核,反之亦然。
所以,回答你的问题
1)ATG Nucleus与EJB之间是什么关系?
没有。
2)核心的EJB是否使用普通的EJB?
否。Nucleus不使用EJB。它使用POJO
3)EJB对Nucleus是必需的吗?
没有。
我可以改用其他东西吗?
是。我建议您使用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)的文章。是同一核吗?
不,这是完全无关的