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吗?
没有。完全不相关