2014-11-21 31 views
2

我對ATG和EJB並不熟悉,只是對後者有一個粗略的概念。剛開始閱讀ATG時,似乎它的一個組件(即Nucleus)使用EJB。它看起來像ATG中的其他所有東西都是基於Nucleus的。 我可能不得不很快與ATG合作,所以:ATG Nucleus - EJB關係

1)ATG Nucleus和EJB之間有什麼關係?
2)EJB是核心使用普通EJB的EJB嗎?
3)Nucleus需要EJB嗎?我可以使用別的東西嗎?
4)Nucleus是否使用EJB的全部功能或將其替換到某處?
5)Nucleus提供的功能能否被EJB完全替代?
6)我需要學習EJB來使用Nucleus嗎?它會提高我對Nucleus的理解嗎?

很抱歉,如果這些問題很蠢,我只是想加快我的學習速度。

在wikepedia上也發現了一篇關於DataNucleus(以前稱爲Java Persistent Objects JPOX)的文章。這是同一個Nucleus嗎?

回答

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核和EJB之間的關係?

無。

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

否Nucleus不使用EJB。它使用POJOs

3)EJB是Nucleus必需的嗎?

我可以用別的東西來代替?

是的。我建議你使用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層的Repository框架,但不僅僅是關係數據庫數據源,還包括LDAP,XML和其他文件數據源。

5)Nucleus提供的功能是否可以完全被EJB取代?

在技術層面,是的。

但是,EJB(特別是在EJB3之前)非常笨重,看起來過於複雜。依賴注入,管理實體(ORM)等只是ATG的功夫少得多,並且在其他一些框架(Spring Hibernate等)中也是如此。

此外,ATG作爲一個平臺(同樣,不是技術上只是Nucleus)爲個性化和商業提供了許多複雜的業務功能。

6)我是否需要學習EJB來使用Nucleus?

不,不是在所有

它會提高我的核的理解?

是的。但僅限於非常有限的方式。任何學習或理解都是從已知到未知的旅程。已知的基數越大,越容易朝未知方向移動,因爲您有更多的起跳點。

如果您已經非常瞭解Java EE,那麼您將能夠與ATG平臺在底層進行的操作相關,因此會更容易理解。但是,如果您根本不瞭解EJB,那麼爲了更好地理解ATG而學習它實際上會產生不利影響。另一方面,我認爲您必須瞭解並理解Java EE Web應用程序(JSP,Servlets,過濾器等)才能最好地使用ATG。

在wikepedia上也發現了一篇關於DataNucleus(以前稱爲Java Persistent Objects JPOX)的文章。這是同一個Nucleus嗎?

號這是完全不相關的

1

ATG包由其組裝生產的每一個耳朵無狀態會話EJB,除非你排除DafEar模塊。 DafEar EJB是ATG中跨應用程序會話功能所必需的,包括dyn/admin Web控制檯和ACC。

每個ATG EAR包含多個war文件和一個EJB jar文件。可以看到在EJB罐子和引用的任何耳部,一個ATG彙編生產:

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

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

的EJB在應用程序組件來源例如:$ {ATG_HOME}/DafEar/base/j2ee-components/

有可能構建一個沒有EJB的ATG ear,但沒有dyn/admin和ACC。在某些情況下,比如BCC /商品,在排除DafEar和訪問dyn/admin中的關鍵管理組件(如DeploymentServer)上將不太現實,因此DafEar最常部署在ATG/Oracle Commerce應用程序中。