Java 如何配置wildfly以使用EclipseLink?

Java 如何配置wildfly以使用EclipseLink?,java,eclipselink,wildfly,wildfly-8,Java,Eclipselink,Wildfly,Wildfly 8,我已经安装了wildfly 8.1,因为我已经有一个项目配置为使用EclipseLink,所以我尝试将wildfly配置为使用它 但是,它总是给出相同的错误: at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:166) [wildfly-server-8.1.0.Final.jar:8.1.0.Final] at org.jboss.msc.ser

我已经安装了wildfly 8.1,因为我已经有一个项目配置为使用EclipseLink,所以我尝试将wildfly配置为使用它

但是,它总是给出相同的错误:

at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:166) [wildfly-server-8.1.0.Final.jar:8.1.0.Final]
 at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
 at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_25]
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_25]
 at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]
Caused by: javax.persistence.PersistenceException: JBAS011466: PersistenceProvider '
org.eclipse.persistence.jpa.PersistenceProvider
' not found
 at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.lookupProvider(PersistenceUnitServiceHandler.java:990)
 at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.addPuService(PersistenceUnitServiceHandler.java:258)
 at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.handleWarDeployment(PersistenceUnitServiceHandler.java:191)
 at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.deploy(PersistenceUnitServiceHandler.java:126)
 at org.jboss.as.jpa.processor.PersistenceBeginInstallProcessor.deploy(PersistenceBeginInstallProcessor.java:52)
 at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:159) [wildfly-server-8.1.0.Final.jar:8.1.0.Final]
 ... 5 more
我已经按照经理的指示做了,但没有任何改变。我已经将eclipseLink的jar添加到“modules\system\layers\base\org\eclipse\persistence\main” 以及module.xml:

<module xmlns="urn:jboss:module:1.3" name="org.eclipse.persistence">
    <resources>
        <resource-root path="jipijapa-eclipselink-1.0.1.Final.jar"/>
        <resource-root path="eclipselink.jar"/>
    </resources>

    <dependencies>
        <module name="asm.asm"/>
        <module name="javax.api"/>
        <module name="javax.annotation.api"/>
        <module name="javax.enterprise.api"/>
        <module name="javax.persistence.api"/>
        <module name="javax.transaction.api"/>
        <module name="javax.validation.api"/>
        <module name="javax.xml.bind.api"/>
        <module name="org.antlr"/>
        <module name="org.apache.commons.collections"/>
        <module name="org.dom4j"/>
        <module name="org.javassist"/>
        <module name="org.jboss.as.jpa.spi"/>
        <module name="org.jboss.logging"/>
        <module name="org.jboss.vfs"/>
    </dependencies>
</module>

你知道有什么问题吗

Tks

编辑: My 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="AppPu">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>java:/H2Ds</jta-data-source>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
    </persistence-unit>
</persistence>

org.eclipse.persistence.jpa.PersistenceProvider
java:/H2Ds
假的

您需要将提供者添加到
persistence.xml中的持久化单元中:

<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
org.eclipse.persistence.jpa.PersistenceProvider

我终于解决了这个问题

事实上,我有一个复合单元,所有persistence.xml都是正确的,但是声明复合单元的persistence.xml是提供者的错误声明:

<provider>
   org.eclipse.persistence.jpa.PersistenceProvider
</provider>

org.eclipse.persistence.jpa.PersistenceProvider
替换为:

<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
org.eclipse.persistence.jpa.PersistenceProvider

现在可以正常工作了。

persistence.xml的provider部分的新行行不通(它有什么帮助?)。 Wildfly没有在libs中提供eclipseLink实现。要解决此问题,请执行以下步骤:

  • 下载eclipselink.jar(或从maven repo复制)
  • 复制到 目的地: …Wildfly\modules\system\layers\base\org\eclipse\persistence\main
  • 编辑module.xml(相同路径)。添加节

  • 服务器重新启动后,一切正常。

    关于如何配置eclipselin模块的正式文档,以及激活vfs Achieve factory impl所需的系统属性都在这里给出:

    对于模块,请执行以下操作:

    您可能希望确保调试该类,确保调用该类并使动态持久性单元属性都正确。 但是不要乱搞容器特定的persistence.xml属性。Wildfly做得很好,他们自己添加了它们


    因此,请遵循他们的文档,这是最好的建议。

    在使用servicepack的EAP中,存在一个陷阱,即
    org.eclipse.persistence
    模块实际上可能位于
    .overlays/
    树中(
    模块/modules/system/layers/base/.overlays/
    ).

    你能给我看看persistence.xml吗?我编辑了我的帖子并添加了persistence.xmloops!只是copy/pass中有一个错误,但是my persistence.xml包含提供者的声明!我解决了这个问题,我做出了回应来解释它。这两种方式没有区别:有换行还是没有换行。所以这并不是解决你问题的方法。对我来说,这有很大的不同!现在我部署时没有错误。为了好玩,我尝试在提供者的标记后插入一个换行符,我重现了错误!很奇怪。但从stacktrace上看,这是有道理的
    <module xmlns="urn:jboss:module:1.1" name="org.eclipse.persistence">
        <resources>
            <resource-root path="jipijapa-eclipselink-10.0.0.Final.jar"/>
            <resource-root path="eclipselink.jar">           
               <filter>
                  <exclude path="javax/**" />
               </filter>
            </resource-root>
        </resources>
    
        <dependencies>
            <module name="asm.asm"/>
            <module name="javax.api"/>
            <module name="javax.annotation.api"/>
            <module name="javax.enterprise.api"/>
            <module name="javax.persistence.api"/>
            <module name="javax.transaction.api"/>
            <module name="javax.validation.api"/>
            <module name="javax.xml.bind.api"/>
            <module name="javax.ws.rs.api"/>
            <module name="org.antlr"/>
            <module name="org.apache.commons.collections"/>
            <module name="org.dom4j"/>
            <module name="org.jboss.as.jpa.spi"/>
            <module name="org.jboss.logging"/>
            <module name="org.jboss.vfs"/>
        </dependencies>
    </module>
    
    <system-properties>
       ...
       <property name="eclipselink.archive.factory" value="org.jipijapa.eclipselink.JBossArchiveFactoryImpl"/>
    </system-properties>
    
    <property name="eclipselink.target-server" value="JBoss" />
    
      @SuppressWarnings({ "rawtypes", "unchecked" })
        @Override
        public void addProviderProperties(Map properties, PersistenceUnitMetadata pu) {
            if (!pu.getProperties().containsKey(ECLIPSELINK_TARGET_SERVER)) {
                properties.put(ECLIPSELINK_TARGET_SERVER, WildFlyServerPlatform.class.getName());
                properties.put(ECLIPSELINK_ARCHIVE_FACTORY, JBossArchiveFactoryImpl.class.getName());
                properties.put(ECLIPSELINK_LOGGING_LOGGER, JBossLogger.class.getName());
            }
        }