netbeans 8.1下如何配置wildfly 9.0.2使用EclipseLink

How to configure wildfly 9.0.2 to use EclipseLink under netbeans 8.1

我已经在 netbeans 8.1 下安装了 wildfly 9.0.2,因为我已经有一个项目配置为使用 EclipseLink,所以我尝试配置 wildfly 以使用它。 到目前为止,我在 Glassfish Server 4 下开发了我的应用程序。我想开始使用 WildFly。 项目是使用maven创建的,
这是服务器日志:

09:54:13,557 INFO [org.jboss.as.jpa] (MSC service thread 1-6) WFLYJPA0002: Read persistence.xml for AdisMngmtPU 09:54:13,684 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC000001: Failed to start service jboss.deployment.unit."EAmvnWildfly-ear-1.0.ear".FIRST_MODULE_USE: org.jboss.msc.service.StartException in service jboss.deployment.unit."EAmvnWildfly-ear-1.0.ear".FIRST_MODULE_USE: WFLYSRV0153: Failed to process phase FIRST_MODULE_USE of deployment "EAmvnWildfly-ear-1.0.ear" at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:163) at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: javax.persistence.PersistenceException: WFLYJPA0057: PersistenceProvider 'org.eclipse.persistence.jpa.PersistenceProvider' not found at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.lookupProvider(PersistenceUnitServiceHandler.java:1007) at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.nextPhaseDependsOnPersistenceUnit(PersistenceUnitServiceHandler.java:1046) at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.deploy(PersistenceUnitServiceHandler.java:136) at org.jboss.as.jpa.processor.PersistenceBeginInstallProcessor.deploy(PersistenceBeginInstallProcessor.java:52) at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:156) ... 5 more 09:54:13,703 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 2) WFLYCTL0013: Operation ("full-replace-deployment") failed - address: ([]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"EAmvnWildfly-ear-1.0.ear\".FIRST_MODULE_USE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"EAmvnWildfly-ear-1.0.ear\".FIRST_MODULE_USE: WFLYSRV0153: Failed to process phase FIRST_MODULE_USE of deployment \"EAmvnWildfly-ear-1.0.ear\" Caused by: javax.persistence.PersistenceException: WFLYJPA0057: PersistenceProvider 'org.eclipse.persistence.jpa.PersistenceProvider' not found"}} 09:54:16,582 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) WFLYSRV0016: Replaced deployment "EAmvnWildfly-ear-1.0.ear" with deployment "EAmvnWildfly-ear-1.0.ear" 09:54:16,583 INFO [org.jboss.as.controller] (DeploymentScanner-threads - 2) WFLYCTL0183: Service status report WFLYCTL0186: Services which failed to start: service jboss.deployment.unit."EAmvnWildfly-ear-1.0.ear".FIRST_MODULE_USE service jboss.deployment.unit."EAmvnWildfly-ear-1.0.ear".FIRST_MODULE_USE: org.jboss.msc.service.StartException in service jboss.deployment.unit."EAmvnWildfly-ear-1.0.ear".FIRST_MODULE_USE: WFLYSRV0153: Failed to process phase FIRST_MODULE_USE of deployment "EAmvnWildfly-ear-1.0.ear"

09:54:26,739 INFO [org.jboss.as.server.deployment] (MSC service thread 1-5) WFLYSRV0208: Stopped subdeployment (runtime-name: EAmvnWildfly-web-1.0.war) in 91ms 09:54:26,749 INFO [org.jboss.as.server.deployment] (MSC service thread 1-5) WFLYSRV0028: Stopped deployment EAmvnWildfly-ear-1.0.ear (runtime-name: EAmvnWildfly-ear-1.0.ear) in 112ms 09:54:26,759 INFO [org.jboss.as.server.deployment] (MSC service thread 1-7) WFLYSRV0027: Starting deployment of "EAmvnWildfly-ear-1.0.ear" (runtime-name: "EAmvnWildfly-ear-1.0.ear") 09:54:26,789 INFO [org.jboss.as.server.deployment] (MSC service thread 1-7) WFLYSRV0207: Starting subdeployment (runtime-name: "EAmvnWildfly-web-1.0.war") 09:54:27,197 INFO [org.jboss.as.jpa] (MSC service thread 1-7) WFLYJPA0002: Read persistence.xml for AdisMngmtPU 09:54:27,236 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC000001: Failed to start service jboss.deployment.unit."EAmvnWildfly-ear-1.0.ear".FIRST_MODULE_USE: org.jboss.msc.service.StartException in service jboss.deployment.unit."EAmvnWildfly-ear-1.0.ear".FIRST_MODULE_USE: WFLYSRV0153: Failed to process phase FIRST_MODULE_USE of deployment "EAmvnWildfly-ear-1.0.ear" at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:163) at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: javax.persistence.PersistenceException: WFLYJPA0057: PersistenceProvider 'org.eclipse.persistence.jpa.PersistenceProvider' not found at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.lookupProvider(PersistenceUnitServiceHandler.java:1007) at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.nextPhaseDependsOnPersistenceUnit(PersistenceUnitServiceHandler.java:1046) at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.deploy(PersistenceUnitServiceHandler.java:136) at org.jboss.as.jpa.processor.PersistenceBeginInstallProcessor.deploy(PersistenceBeginInstallProcessor.java:52) at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:156) ... 5 more

09:54:27,279 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 2) WFLYCTL0013: Operation ("full-replace-deployment") failed - address: ([]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"EAmvnWildfly-ear-1.0.ear\".FIRST_MODULE_USE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"EAmvnWildfly-ear-1.0.ear\".FIRST_MODULE_USE: WFLYSRV0153: Failed to process phase FIRST_MODULE_USE of deployment \"EAmvnWildfly-ear-1.0.ear\" Caused by: javax.persistence.PersistenceException: WFLYJPA0057: PersistenceProvider 'org.eclipse.persistence.jpa.PersistenceProvider' not found"}} 09:54:28,882 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) WFLYSRV0016: Replaced deployment "EAmvnWildfly-ear-1.0.ear" with deployment "EAmvnWildfly-ear-1.0.ear" 09:54:28,882 INFO [org.jboss.as.controller] (DeploymentScanner-threads - 2) WFLYCTL0183: Service status report WFLYCTL0186: Services which failed to start: service jboss.deployment.unit."EAmvnWildfly-ear-1.0.ear".FIRST_MODULE_USE service jboss.deployment.unit."EAmvnWildfly-ear-1.0.ear".FIRST_MODULE_USE: org.jboss.msc.service.StartException in service jboss.deployment.unit."EAmvnWildfly-ear-1.0.ear".FIRST_MODULE_USE: WFLYSRV0153: Failed to process phase FIRST_MODULE_USE of deployment "EAmvnWildfly-ear-1.0.ear"

我的persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="AdisMngmtPU" transaction-type="JTA">
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>java:/AdisMngmtDS</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
    </properties>
  </persistence-unit>
</persistence>

尽管我使用的是 Wildfly 10,但据我所知,在 Wildfly 9 中使用 EclipseLink 的步骤是相同的​​(因此您可能会调整一些文件名,如果它们包含版本号):

  1. 将eclipselink-2.6.1.jar复制到文件夹中 /wildfly-10.0.0.Final/modules/system/layers/base/org/eclipse/persistence/main

  2. 在同一文件夹中编辑 module.xml-文件:

<resources>
        <resource-root path="jipijapa-eclipselink-10.0.0.Final.jar"/>
        <resource-root path="eclipselink-2.6.1.jar">
        <filter>
                <exclude path="javax/**" />
        </filter>
</resource-root>
    </resources>
  1. 如果您正在使用 MySql,您需要将 MySql-连接器放入 /wildfly-10.0.0.Final/modules/system/layers/base/com/sql/mysql/main

  2. 在你的独立-full.xml(或者standalone.xml如果你正在使用它)你需要包括你的数据源和驱动程序:

    <subsystem xmlns="urn:jboss:domain:datasources:4.0">
        <datasources>
            <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
        <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
                <driver>h2</driver>
                <security>
                    <user-name>sa</user-name>
                    <password>sa</password>
                </security>
            </datasource>
            <datasource jndi-name="java:/AdisMngmtDS" pool-name="AdisMngmtDS" enabled="true">
                <connection-url>jdbc:mysql://localhost/AdisMngmtDS</connection-url>
                <driver>mysql</driver>
                <security>
                    <user-name>root</user-name>
                    <password>password</password>
                </security>
                <validation>
                    <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
                    <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
                </validation>
            </datasource>               
            <drivers>
                <driver name="h2" module="com.h2database.h2">
                   <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                </driver>
                <driver name="mysql" module="com.mysql">
                    <driver-class>com.mysql.jdbc.Driver</driver-class>
                    <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
                </driver>
            </drivers>
        </datasources>
    </subsystem> 
    

(您不应该删除示例数据源,因为 Wildfly 以某种方式需要它)

  1. 您可能希望在您的独立版中包含-full.xml

    <system-properties>
        <property name="eclipselink.archive.factory" value="org.jipijapa.eclipselink.JBossArchiveFactoryImpl"/> 
    </system-properties>
    

如果您不包括它,EclipseLink 将使用 CamelCase 来表示 table-names 等

  1. 您的项目不应包含对 Dom4J 的任何依赖项,因为您可能 运行 进入 ClassCast-Exceptions。

我想就是这样。

I just had all of these problems getting eclipselink 2.6.3 to work on Wildfly 10, which is 运行 on a windows 7, 64 bit platform.

Everything Joachim Rohde said is correct, which is also described in the Wildfly developer's guide at https://docs.jboss.org/author/display/WFLY10/JPA+Reference+Guide#JPAReferenceGuide-UsingEclipseLink.

You must follow these instructions perfectly or there will be errors. However, there were two exceptions:

  1. The dom4j dependency issue is not the dependency problem or is no longer a problem with the versions I used (it seems that it can be included in the dependency list in module.xml with no error - at least no errors yet).

  2. Instead, there are dependency issues with an activemq artemis reference (the dependency must be added to the dependency list in module.xml). It worked using the following reference:

        module name="org.apache.activemq.artemis"
    

added to the dependency list or find the reference to it among the modules in your version of Wildfly (if it is included).