Jpa EAR应用程序在Websphere8.5上工作,但拒绝在WebSphereLiberty 16.0.0.4上工作

Jpa EAR应用程序在Websphere8.5上工作,但拒绝在WebSphereLiberty 16.0.0.4上工作,jpa,jakarta-ee,websphere,ear,websphere-liberty,Jpa,Jakarta Ee,Websphere,Ear,Websphere Liberty,我继承了我需要继续发展的遗产。在WebSphereApplicationServerFullProfile8.5上,我无法解决的问题是它工作正常。不幸的是(幸运的是:))我的工作站是Macbook Pro,完整的配置文件无法安装在OSX上(目前无法找到链接,但已经做了一些搜索并找到了足够的证据),所以我需要在Linux上使用VirtualBox,或者试着在Liberty上运行此应用程序 最新的解决方案不太适合我,我得到以下错误: [错误]CWWJP0012E:未指定持久性单元名称,并且 在Big

我继承了我需要继续发展的遗产。在WebSphereApplicationServerFullProfile8.5上,我无法解决的问题是它工作正常。不幸的是(幸运的是:))我的工作站是Macbook Pro,完整的配置文件无法安装在OSX上(目前无法找到链接,但已经做了一些搜索并找到了足够的证据),所以我需要在Linux上使用VirtualBox,或者试着在Liberty上运行此应用程序

最新的解决方案不太适合我,我得到以下错误:

[错误]CWWJP0012E:未指定持久性单元名称,并且 在BigEnterpriseAppEAR中找不到唯一的持久性单元 应用程序和BigEnterpriseAppEJB.jar模块。[错误]CWWJP0029E: 服务器在中找不到持久性单元 BigEnterpriseAppEJB.jar模块和BigEnterpriseAppEAR 应用[错误]CWNEN0035E:java:comp/env/BigEnterpriseApp 数据提供程序的javax.persistence.EntityManager类型的引用 的BigEnterpriseAppEJB.jar模块中的组件 无法解析BigEnterpriseAppEAR应用程序。[错误] CNTR0020E:EJB在运行期间引发了意外(未声明)异常 对bean调用方法“getDataByOwner” “BeanId(BigEnterpriseAppEAR#BigEnterpriseAppWEB.war#DataAPI,null)”。 异常数据:javax.ejb.EJBTransactionRolledbackException:嵌套 例外情况是:javax.ejb.EJBException: java:comp/env/BigEnterpriseApp类型的引用 中的DataProvider组件的javax.persistence.EntityManager BigEnterpriseAppEAR应用程序的BigEnterpriseAppEJB.jar模块 无法解决

这个应用程序非常简单
EAR
=
JPA
+
EJB
+
WAR

我不知道哪些配置文件会有帮助,所以只需在评论中写下要发布的内容,我就会这样做。

先谢谢你

更新1:

server.xml
文件:

<server description="new server">

    <!-- Enable features -->
    <featureManager>
        <feature>localConnector-1.0</feature>
         <feature>servlet-3.1</feature>
         <feature>ejbLite-3.1</feature>
         <feature>jndi-1.0</feature>
         <feature>jaxrs-1.1</feature>
         <feature>ssl-1.0</feature>
         <feature>jpa-2.0</feature>
         <feature>cdi-1.0</feature>
    </featureManager>

    <basicRegistry id="basic" realm="BasicRealm">
        <!-- <user name="yourUserName" password="" />  -->
    </basicRegistry>

    <!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
    <httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>

    <!-- Automatically expand WAR files and EAR files -->
    <applicationManager autoExpand="true"/>


    <applicationMonitor updateTrigger="mbean"/>

    <library id="DB2JCC4Lib">
         <fileset dir="/Users/anatoly/developer/sql_drivers" includes="*.jar"/>
    </library>

    <dataSource id="db2_slc" jndiName="jdbc/BEADB" type="javax.sql.DataSource">
            <jdbcDriver libraryRef="DB2JCC4Lib"/>
            <properties.db2.jcc databaseName="beadb" password="********" portNumber="50000" serverName="db2server" user="db2username"/>
    </dataSource>

    <keyStore id="defaultKeyStore" password="******"/>

    <enterpriseApplication id="BigEnterpriseAppEAR" location="BigEnterpriseAppEAR.ear" name="BigEnterpriseAppEAR"/>
</server>
[错误]CWWJP0012E:未指定持久性单元名称,并且在BigEnterpriseAppEAR应用程序和BigEnterpriseAppEJB.jar模块中未找到唯一的持久性单元

这意味着您的persistence.xml根不在JPA规范第8.2节定义的合法位置:

在Java EE环境中,持久化单元的根必须是以下之一:

  • EJB-JAR文件
  • WAR文件的WEB-INF/classes目录[87]
  • WAR文件的WEB-INF/lib目录中的jar文件
  • EAR库目录中的jar文件
  • 应用程序客户机jar文件
注意:JavaPersistence1.0支持使用EAR根目录中的jar文件作为 持久性单位。不再支持此使用。便携式应用程序应该使用EAR 而不是此案例的库目录

您的设置似乎试图使用#4

bigenerpriseapppear->bigenerpriseappjpa.jar->META-INF->persistence.xml

BigEnterpriseAppJPA.jar应该放在您的EAR库目录中。我相信默认情况下这将是bigenerpriseAppear/lib,但您可以使用EAR中的/META-INF/应用程序.xml来配置它

还要注意,持久化单元名称必须是唯一的。确保所有持久化单元名称都不是使用相同的名称

[错误]CWWJP0012E:未指定持久性单元名称,并且在BigEnterpriseAppEAR应用程序和BigEnterpriseAppEJB.jar模块中未找到唯一的持久性单元

这意味着您的persistence.xml根不在JPA规范第8.2节定义的合法位置:

在Java EE环境中,持久化单元的根必须是以下之一:

  • EJB-JAR文件
  • WAR文件的WEB-INF/classes目录[87]
  • WAR文件的WEB-INF/lib目录中的jar文件
  • EAR库目录中的jar文件
  • 应用程序客户机jar文件
注意:JavaPersistence1.0支持使用EAR根目录中的jar文件作为 持久性单位。不再支持此使用。便携式应用程序应该使用EAR 而不是此案例的库目录

您的设置似乎试图使用#4

bigenerpriseapppear->bigenerpriseappjpa.jar->META-INF->persistence.xml

BigEnterpriseAppJPA.jar应该放在您的EAR库目录中。我相信默认情况下这将是bigenerpriseAppear/lib,但您可以使用EAR中的/META-INF/应用程序.xml来配置它


还要注意,持久化单元名称必须是唯一的。确保所有持久性单元名称都不是使用相同的名称。

发布server.xml和persistence.xml是一个好的开始。@FRowe,完成。非常感谢。persistence.xml的位置是什么?它位于:
bigenerpriseappjpa>src>META-INF>persistence.xml
persistence.xml在打包的EAR中的位置是什么?Liberty配置文件严格按照JPA规范解释位置,而完整配置文件接受非标准位置。发布server.xml和persistence.xml将是一个好的开始。@FRowe,完成。非常感谢。persistence.xml的位置是什么?它位于:
bigenerpriseappjpa>src>META-INF>persistence.xml
persistence.xml在打包的EAR中的位置是什么?Liberty配置文件严格按照JPA规范解释位置,而完整配置文件接受非标准位置。
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="BigEnterpriseApp">
        <jta-data-source>jdbc/BEADB</jta-data-source>
        <class>com.bea.entities.System</class>
        <class>com.bea.entities.Data</class>
        <class>com.bea.entities.User</class>
        <class>com.bea.entities.Group</class>
        <properties>
            <property name="openjpa.jdbc.Schema" value="BEADB" />
            <property name="openjpa.ConnectionRetainMode" value="transaction" />
        </properties>
    </persistence-unit>
</persistence>