我想将WAR应用程序的一部分拆分为不同的JAR组件。 每个JAR组件都包含JPA-Entities,EJBs& JSF的复合组件。
示例:将用户管理(XHTML,EJB,JPA-Entities)解压缩到自己的jar中。
首先,只要我不必使用entityManager,一切看起来都很好。
问题: 在JAR文件的EJB中,实体管理器永远不会被注入。
我正在使用@PersistenceContext注释进行注入。
我在所有META-INF文件夹中都有一个beans.xml,并且正确注入了所有内容(例外的entityManager)。如果我将persistence.xml放在所有JAR文件中或仅放在WAR文件中,则无关紧要。
有人有胶水可以做到这一点吗?
我在哪里放置不同的配置文件(beans.xml,persistence.xml)?
我需要一个ejb-jar.xml文件吗?
这有可能吗?
技术-堆栈: JBoss 6.1 / PrimeFaces 3.2 / Maven / EJB 3.1 / Hibernate / JTA / CDI
答案 0 :(得分:0)
每个包含实体的jar都需要一个persistence.xml文件。 每个这样的持久性xml都应该定义一个不同的持久性单元。
如果您希望一个持久性单元在不同的持久性单元中引用实体定义,那么您需要将其作为jar文件条目包含在持久性单元定义中(请参阅下面的示例)。 这对我们来说非常类似于JBoss 5.1(然后是7)/ EJB3 / Hibernate,Maven,...
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd” 版本= “1.0” >
<persistence-unit name="PersistenceUnitA">
<jar-file>JarContainingOtherPersistenceUnit</jar-file>
<jta-data-source>java:/jboss-mysql-ds</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
</properties>
</persistence-unit>