2014-04-18 109 views
0

如何將存儲在jar文件中的模型加載到ear應用程序中的持久單元?如何從persistence.xml文件中的jar文件加載類

< persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> 
      <persistence-unit name="PersonalizedOfferAssertionPU" transaction-type="RESOURCE_LOCAL"> 
      <provider>org.hibernate.ejb.HibernatePersistence</provider> 
      <non-jta-data-source>java:/DefaultDS</non-jta-data-source> 
      <jar-file>../../lib/test.jar</jar-file> 
     <class>com.test.entity.Transaction</class> 
</persistence-unit> 
</persistence> 

事務類是在test.jar文件中,但是我試圖部署ear應用程序時沒有發現類沒有發現異常。

+0

您是否驗證過test.jar包被推入耳朵? – Murthy

+0

感謝您的回覆!我需要在哪裏包括jar文件才能進入根類? –

+0

我已經將jar包含在根目錄中,但仍未找到該類 –

回答

1

從書臨JPA:

在一個jar文件條目中列出的任何JAR必須在部署單元的類路徑.......再次,這可以通過兩種 把完成JAR放在EAR的lib目錄中(如果您正在部署WAR,則爲WAR),將JAR添加到部署單元的清單類路徑或其他特定於供應商的方式。 將JAR列入jar文件元素時,必須列出相對於META-INF/persistence.xml文件所在的 中的JAR文件的父級。

這與您將放入清單中的類路徑 條目中的內容相匹配。

例如,假設我們將調用emp.ear的企業歸檔(EAR)爲 ,結構如清單13-5所示。

清單13-5。在外部JAR

emp.ear 
emp-ejb.jar 
META-INF/persistence.xml 
lib/emp-classes.jar 
examples/model/Employee.class 

persistence.xml文件的內容的實體應當如清單13-6中,與罐文件包含「LIB/EMP-classes.jar」來引用 元件在EAR文件 的lib目錄下的emp-classes.jar。這將導致提供者將它在emp-classes.jar (Employee.class)中找到的帶註釋的類添加到持久性單元,並且由於該jar位於EAR的lib目錄中,因此 會自動位於應用程序上類路徑。

清單13-6。 persistence.xml的內容

<persistence-unit name="EmployeeService"> 
<jta-data-source>java:app/jdbc/EmployeeDS</jta-data-source> 
<jar-file>lib/emp-classes.jar</jar-file> 
</persistence-unit>