我进入继承EAR application,我需要继续发展。在Websphere Application Server Full Profile 8.5上,我无法在Websphere Liberty 16.0.0.4上使用它的问题,它可以正常工作。不幸的是(幸运的是:))我的工作站是Macbook Pro,WAS Full Profile无法安装在OSX上(现在无法找到链接,但已经做了一些搜索并找到了足够的证据)所以我需要在Linux上使用VirtualBox或尝试在Liberty上运行此应用程序。
最新的解决方案对我来说效果不佳,我收到以下错误:
[错误] CWWJP0012E:未指定持久性单元名称 BigEnterpriseAppEAR中找不到唯一的持久性单元 应用程序和BigEnterpriseAppEJB.jar模块。 [错误] CWWJP0029E: 服务器找不到持久性单元 BigEnterpriseAppEJB.jar模块和BigEnterpriseAppEAR 应用。 [错误] CWNEN0035E:java:comp / env / BigEnterpriseApp DataProvider的类型为javax.persistence.EntityManager的引用 BigEnterpriseAppEJB.jar模块中的组件 BigEnterpriseAppEAR应用程序无法解析。 [错误] CNTR0020E:EJB在期间抛出了意外(未声明的)异常 调用方法" getDataByOwner"在豆上 " BeanId(BigEnterpriseAppEAR#BigEnterpriseAppWEB.war #DataAPI,null)"。 异常数据:javax.ejb.EJBTransactionRolledbackException:嵌套 异常是:javax.ejb.EJBException:The 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>
persistence.xml
文件,位于 BigEnterpriseAppJPA&gt; src&gt; META-INF&gt;的persistence.xml
persistence.xml
中的BigEnterpriseAppJPA.jar - &gt; META-INF - &gt;的persistence.xml
:<?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>
答案 0 :(得分:0)
[错误] 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文件
注意:Java Persistence 1.0支持在EAR的根目录中使用jar文件作为a的根 持久性单位。不再支持此用途。便携式应用程序应使用EAR 这种情况下的库目录是
您的设置似乎是尝试使用#4 ?
BigEnterpriseAppEAR - &gt; BigEnterpriseAppJPA.jar - &gt; META-INF - &gt;的persistence.xml 强>
BigEnterpriseAppJPA.jar 应放在您的EAR库目录中。我相信默认情况下这将是 BigEnterpriseAppEAR / lib ,但您可以使用EAR中的/ META-INF / application.xml 进行配置
另请注意,持久性单元名称必须是唯一的。确保所有持久性单元名称都没有使用相同的名称。