wildfly 14:具有 missing/unavailable 依赖项的服务
wildfly 14 : Services with missing/unavailable dependencies
我是 wildfly 和 jpa 的新手。
我使用 eclipselink 版本 2.7.3 作为库
这是我的 link POM、持久性和独立文件
当我部署 ear 文件时出现此错误:
{
"WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.app.EnterpriseSPIN-ear.jdbc.digisign_db"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"EnterpriseSPIN-ear.ear#digisignPU\" is missing [jboss.naming.context.java.app.EnterpriseSPIN-ear.jdbc.digisign_db]"]
}
我的坚持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="digisignPU" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>java:jboss/datasources/digisign</jta-data-source>
<properties>
<property name="eclipselink.target-server" value="JBoss"/>
<property name="eclipselink.target-database" value="PostgreSQL"/>
<property name="eclipselink.deploy-on-startup" value="true"/>
<property name="eclipselink.jdbc.user" value="someuser"/>
<property name="eclipselink.jdbc.password" value="somepassword"/>
<property name="eclipselink.jdbc.driver" value="org.postgresql.Driver"/>
<property name="eclipselink.jdbc.url" value="jdbc:postgresql://192.168.182.7:5432/digisign_db"/>
<property name="eclipselink.ddl-generation" value="none"/>
</properties>
</persistence-unit>
</persistence>
我的独立的xml
<datasources>
<datasource jta="true" jndi-name="java:jboss/datasources/digisign" pool-name="digisign" enabled="true" use-java-context="true">
<connection-url>jdbc:postgresql://192.168.182.7:5432/digisign_db</connection-url>
<driver>postgresql</driver>
<security>
<user-name>someuser</user-name>
<password>somepassword</password>
</security>
</datasource>
<drivers>
<driver name="postgresql" module="org.postgresql">
<driver-class>org.postgresql.Driver</driver-class>
</driver>
</drivers>
</datasources>
这是我的 postgresql 模块 xml
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="org.postgresql">
<resources>
<resource-root path="postgresql-42.2.2.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
和这是我的 eclipselink 持久性模块 xml
<module name="org.eclipse.persistence" xmlns="urn:jboss:module:1.5">
<properties>
<property name="jboss.api" value="public"/>
</properties>
<resources>
<resource-root path="jipijapa-eclipselink-14.0.1.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>
我已经尝试过很多次了,但都没有成功。请帮忙!
我有一个工作项目(Wildfly 下的 运行),我不必在 persistence.xml 中定义的数据源中包含 "java:" 前缀:
在standalone.xml
<datasource jta="true" jndi-name="java:/jdbc/xxx">
在persistence.xml
<persistence version="2.1" ...>
<persistence-unit name="myPU" >
...
<jta-data-source>jdbc/xxx</jta-data-source>
出于兴趣,我创建了一个小 example。 (这只是一个快速破解:-)
它正在使用数据库 h2 和 postgres 处理 wildfly 14。尝试将此示例与您的应用程序进行比较。
我也看过你的 pom.xml。有一些依赖项应该设置为提供的范围。尝试将 eclipselink
和 postgres
依赖项设置为提供。它们不应添加到您的 ear
。它们由wildfly提供。
我是 wildfly 和 jpa 的新手。
我使用 eclipselink 版本 2.7.3 作为库
这是我的 link POM、持久性和独立文件
当我部署 ear 文件时出现此错误:
{
"WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.app.EnterpriseSPIN-ear.jdbc.digisign_db"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"EnterpriseSPIN-ear.ear#digisignPU\" is missing [jboss.naming.context.java.app.EnterpriseSPIN-ear.jdbc.digisign_db]"]
}
我的坚持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="digisignPU" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>java:jboss/datasources/digisign</jta-data-source>
<properties>
<property name="eclipselink.target-server" value="JBoss"/>
<property name="eclipselink.target-database" value="PostgreSQL"/>
<property name="eclipselink.deploy-on-startup" value="true"/>
<property name="eclipselink.jdbc.user" value="someuser"/>
<property name="eclipselink.jdbc.password" value="somepassword"/>
<property name="eclipselink.jdbc.driver" value="org.postgresql.Driver"/>
<property name="eclipselink.jdbc.url" value="jdbc:postgresql://192.168.182.7:5432/digisign_db"/>
<property name="eclipselink.ddl-generation" value="none"/>
</properties>
</persistence-unit>
</persistence>
我的独立的xml
<datasources>
<datasource jta="true" jndi-name="java:jboss/datasources/digisign" pool-name="digisign" enabled="true" use-java-context="true">
<connection-url>jdbc:postgresql://192.168.182.7:5432/digisign_db</connection-url>
<driver>postgresql</driver>
<security>
<user-name>someuser</user-name>
<password>somepassword</password>
</security>
</datasource>
<drivers>
<driver name="postgresql" module="org.postgresql">
<driver-class>org.postgresql.Driver</driver-class>
</driver>
</drivers>
</datasources>
这是我的 postgresql 模块 xml
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="org.postgresql">
<resources>
<resource-root path="postgresql-42.2.2.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
和这是我的 eclipselink 持久性模块 xml
<module name="org.eclipse.persistence" xmlns="urn:jboss:module:1.5">
<properties>
<property name="jboss.api" value="public"/>
</properties>
<resources>
<resource-root path="jipijapa-eclipselink-14.0.1.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>
我已经尝试过很多次了,但都没有成功。请帮忙!
我有一个工作项目(Wildfly 下的 运行),我不必在 persistence.xml 中定义的数据源中包含 "java:" 前缀:
在standalone.xml
<datasource jta="true" jndi-name="java:/jdbc/xxx">
在persistence.xml
<persistence version="2.1" ...>
<persistence-unit name="myPU" >
...
<jta-data-source>jdbc/xxx</jta-data-source>
出于兴趣,我创建了一个小 example。 (这只是一个快速破解:-)
它正在使用数据库 h2 和 postgres 处理 wildfly 14。尝试将此示例与您的应用程序进行比较。
我也看过你的 pom.xml。有一些依赖项应该设置为提供的范围。尝试将 eclipselink
和 postgres
依赖项设置为提供。它们不应添加到您的 ear
。它们由wildfly提供。