EAR应用程序适用于Websphere8.5,但拒绝使用Websphere liberty 16.0.0.4

时间:2017-01-09 12:38:46

标签: jpa java-ee websphere ear websphere-liberty

我进入继承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

位于 BigEnterpriseAppEAR - &gt;中的已打包EAR 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>

1 个答案:

答案 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 进行配置

另请注意,持久性单元名称必须是唯一的。确保所有持久性单元名称都没有使用相同的名称。