JEE6战争包装成几个模块

时间:2013-02-18 18:30:48

标签: jpa jar ejb war packaging

我想将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

1 个答案:

答案 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>