4

我想将部分 WAR 应用程序拆分为不同的 JAR 组件。每个 JAR 组件都包含 JPA-Entities、EJB 和 JSF-Composite-Components。

示例:将用户管理(XHTML、EJB、JPA-Entities)提取到自己的 jar 中。

起初,只要我不必使用 entityManager,一切看起来都很好。

问题:在 JAR 文件的 EJB 中,entityManager 永远不会被注入。

我正在使用 @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

4

1 回答 1

0

在每个包含实体的 jar 中都需要一个 persistence.xml 文件。每个这样的持久性 xml 都应该定义一个不同的持久性单元。

如果您希望一个持久性单元引用在不同的持久性单元中定义的实体,那么您需要将其作为 jar 文件条目包含在持久性单元定义中(参见下面的示例)。这适用于我们非常相似的堆栈 JBoss 5.1(然后是 7)/EJB3/Hibernate、Maven、...

http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="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>

于 2013-04-14T12:11:41.763 回答