2011-12-03 14 views
2

在.ear文件中,我的EJB被複制到多個jar和war中以獲得一些技術約束。並且這些jar中只有一個包含persistence.xml文件,我在其中配置了幾個持久性單元。將持久性單元配置爲可在幾個耳朵中使用

myear.ear 
|---- myjar1.jar 
|-------- META-INF/persistence.xml 
|---- myjar2.jar 
|---- mywar.war 

問題是Jboss的找不到罐子「myjar2」中的類持久性配置和戰爭:

無法獲取類配置.... EjbA.class因以下錯誤:無法找到 子部署部署「jar2.jar」部署單元命名爲XXXXX「myear.ear」

要解決的是,我試圖創建一個只包含持久性的新罐子。 xml文件,但它不工作。

任何想法如何我可以共享我的persistence.xml文件到每個jar沒有重新組織我所有的耳朵檔案?

回答

2

按照JPA規範,應該可以讓你在EAR水平是有目共睹的,你在同一個程序.ear定義子模塊定義一個持久化單元:

8.2.2持久性單元範圍

...

即在耳朵的級別定義的持久化單元是 通常在應用所有組件可見。但是,如果在EAR中由EJB-JAR,WAR或 應用程序JAR文件定義了同名的持久性單元,則在EAR級別定義的名稱爲 的持久性單元對於由EAR定義的組件將不可見 表示EJB-JAR,WAR或應用程序jar文件,除非持久性單元 引用使用持久性單元名#語法來指定路徑 名稱以消除引用的歧義。

然而,在第8節:

注:在 的EAR作爲持久單元的根音的根音Java持久性1.0支持使用一個jar文件。此用途不再支持 。對於這種情況,便攜式應用程序應該使用EAR庫目錄 ,而不是。見[9]。

所以我會嘗試將jar放在lib文件夾中。如果你需要這個模塊是一個EJB模塊,它必須在耳朵的根部,所以你可以用persistence.xml文件創建一個單獨的jar文件。

+0

非常感謝你,它的工作原理! – jsebfranck

+0

很高興聽到;) –

相關問題