2011-08-04 63 views
2

如果這是一個明顯的問題,我很抱歉,但是我在閱讀一些書籍時正在閱讀Java EE 6教程,並且難以關聯所有信息。JDO與Java EE 6(CDI和JTA?)

我在JDO和JPA之間做了一點比較。據我所知,JPA和應用服務器,我可以很容易地這樣說:

@Stateless 
public class MyEJB { 

    @PersistenceContext 
    private EntityManager em; 

    // methods that use the JPA entity manager... 
} 

然後,我自己的方法中,我可以使用em獲得在JPA的EntityManager。無論我寫什麼方法(默認)都會自動創建或加入現有的事務。

我想在JDO上有這麼多的樂趣。我懷疑正確的答案是使用CDI。我不確定那會是什麼樣子,也許這個?

@Stateless 
public class MyEJB { 

    @Resource 
    private PersistenceManager em; 

    // methods that use the JDO persistence manager... 
} 

但是這個猜測讓我的問題比答案更多。

  1. 我怎麼知道Glassfish的或什麼的我的Java EE 6應用服務器原來是,如何使產品的PersistenceManagerFactory以及如何使用它來生成對我PersistenceManagers?
  2. 我需要做什麼特殊的事情來實現JTA嗎?如果可能,我想使用容器管理事務。
  3. 我可以將其設置爲使用JNDI來查找我的JDBC連接嗎?
  4. 是否有需要存在的神奇文件來觸發我想要的行爲? (我在看你,空的persistence.xml)

除了強制依賴JDO和可能的DataNucleus直接我寧願保持它作爲Java EE 6,而不涉及春季或其他第三方圖書館,但我會採取第三方圖書館沒有。

謝謝!

回答

1

http://www.datanucleus.org/products/accessplatform_3_0/jdo/j2ee.html 涵蓋了Java EE的許多方面,並給出了幾個Java EE服務器的示例,包括JBoss 7(最新規範)。這是一個貢獻性的努力,因爲沒有人使用所有這些服務器;如果你有需要添加的細節然後將它們發佈到DataNucleus論壇上,那麼它們可以包含在內。

+0

所以,從這個鏈接我認爲這是你可以在J2EE(EJB 2.1等)下做的事情,但它沒有更新爲Java EE 5/6?如果您有時間並且可以在Java EE 6下擴展和/或如何使用它,我將非常感激!謝謝! –

+0

「J2EE」(在DN文檔頁面上)是一個通用術語(對於我們這些長期使用Java的用戶,無論Sun/Oracle更改名稱)...... JEE。 JCA和JTA包含在該頁面中,它們仍然是該環境的一部分,並且是該頁面的用途。可悲的是,我沒有時間更新它。這是針對他們正在使用的特定容器的用戶貢獻。 JBoss7在那裏 – DataNucleus

+0

啊,有人想downvote這個。也許下一次他們有勇氣說明他們爲什麼這樣做,以及他們期望的額外信息。我說「也許」,因爲我不期望它 – DataNucleus