Jpa EAR应用程序在Websphere8.5上工作,但拒绝在WebSphereLiberty 16.0.0.4上工作
我继承了我需要继续发展的遗产。在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模块 无法解决 这个应用程序非常简单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
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文件
- EJB-JAR文件
- WAR文件的WEB-INF/classes目录[87]
- WAR文件的WEB-INF/lib目录中的jar文件
- EAR库目录中的jar文件
- 应用程序客户机jar文件
还要注意,持久化单元名称必须是唯一的。确保所有持久性单元名称都不是使用相同的名称。发布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>