gpt4 book ai didi

jpa - JEE6 war 打包成几个模块

转载 作者:行者123 更新时间:2023-12-01 06:35:54 24 4
gpt4 key购买 nike

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

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

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

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

我正在使用 @PersistenceContext 注释进行注入(inject)。

我在所有 META-INF 文件夹中有一个 beans.xml,并且所有内容(entityManager 除外)都已正确注入(inject)。我是否将persistence.xml 放在所有JAR 文件中或仅放在WAR 文件中都没有关系。

有没有人有胶水如何做到这一点?

我必须在哪里放置不同的配置文件(beans.xml、persistence.xml)?

我需要一个 ejb-jar.xml 文件吗?

这可能吗?

技术栈:
JBoss 6.1/PrimeFaces 3.2/Maven/EJB 3.1/休眠/JTA/CDI

最佳答案

在每个包含实体的 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>

关于jpa - JEE6 war 打包成几个模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14942982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com