在EAR内的多个EJB JAR中共享相同的JPA persistence.xml

Eva*_*tti 7 java weblogic jpa

我们的项目有多个EJB模块,我们希望persistence.xml在它们之间共享一个文件.

我们将persistence.xml文件放在EARs META-INF目录中,但持久性单元在运行时不可用.似乎文件永远不会被读取,因为我们强制使用不正确的类和jar文件,但没有任何反应.

为什么WebLogic不读取persistence.xmlEAR中的文件?

运行代码时出现以下错误,未找到PU(可用持久性单位:[]).

Caused By: java.lang.IllegalArgumentException: No persistence unit named 'em' is available in scope ejb1-module.jar. Available persistence units: []
Run Code Online (Sandbox Code Playgroud)

persistence.xml中

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="system-unit" transaction-type="JTA">
        <jta-data-source>sysmtem-ds</jta-data-source>
        <jar-file>../ejb1-module.jar</jar-file>
        <class>...</class>
        <class>...</class>
        <class>...</class>
    </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

结构(持久性单元放在EAR内)

EAR +
    |- META-INF +
    |       - persistence.xml
    |- ejb1-module.jar
    |- ejb2-module.jar
    |- ejb3-module.jar
Run Code Online (Sandbox Code Playgroud)

我们正在使用WebLogic 10.3.6,它使用JPA 1.0和TopLink/EclipseLink.

Cri*_*ris 4

您应该升级到 JPA 2.0

请参阅此链接:WebLogic Server 10.3.6 中的 JPA 2.0

然后按照来自的答案

在 .ear 文件中跨组件共享持久性单元