Wildfly 9 数据源 spring jpa 在 openshift 上缺少依赖项错误
Wildfly 9 datasource spring jpa missing dependencies error on openshift
我想使用来自 wildfly9 的数据源通过 spring jpa 部署一个应用程序,我想我已经完成了所有需要的配置,但我收到了一个错误。
我有的是
standalon.xml 在子系统中
<datasource jndi-name="java:jboss/datasources/PostgreSQLDS"
jta="true" enabled="${postgresql.enabled}"
use-java-context="true"
pool-name="PostgreSQLDS"
use-ccm="true">
<connection-url>
jdbc:postgresql://${env.OPENSHIFT_POSTGRESQL_DB_HOST}:${env.OPENSHIFT_POSTGRESQL_DB_PORT}/${env.OPENSHIFT_APP_NAME}
</connection-url>
<driver>postgresql</driver>
<security>
<user-name>${env.OPENSHIFT_POSTGRESQL_DB_USERNAME}
</user-name>
<password>
${env.OPENSHIFT_POSTGRESQL_DB_PASSWORD}
</password>
</security>
<validation>
<check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
<background-validation>true</background-validation>
<background-validation-millis>60000</background-validation-millis>
</validation>
<pool>
<flush-strategy>IdleConnections</flush-strategy>
</pool>
</datasource>
<drivers>
<driver name="postgresql" module="org.postgresql.jdbc">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
</drivers>
我的spring.profile.xml有
<beans:bean id="dbDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<beans:property name="jndiName" value="java:jboss/datasources/PostgreSQLDS"/>
</beans:bean>
我得到的错误是
[0m[31m08:57:40,995 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "ROOT.war")]) - failure description: {"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.persistenceunit.\"ROOT.war#my-jpa\".__FIRST_PHASE__ is missing [jboss.naming.context.java.\"\n java:comp\".env.jdbc.\"PostgreSQLDS\n \"]",
"jboss.persistenceunit.\"ROOT.war#my-jpa\" is missing [jboss.naming.context.java.\"\n java:comp\".env.jdbc.\"PostgreSQLDS\n \"]"
]}
我不确定我做错了什么,欢迎任何帮助
使用 java 尝试此 JNDI 资源映射:comp/env 并且您需要使用 jboss-[= 在您的应用程序中引用数据源资源19=] 下面。
<beans:bean id="dbDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<beans:property name="jndiName" value="java:comp/env/jdbc/PostgreSQLDS"/>
</beans:bean>
在 WEB-INF 文件夹中添加 jboss-web.xml 内容
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.jboss.com/xml/ns/javaee
http://www.jboss.org/j2ee/schema/jboss-web_5_1.xsd">
<context-root>/myAppRoot</context-root>
<resource-ref>
<res-ref-name>jdbc/PostgreSQLDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<jndi-name>java:jboss/datasources/PostgreSQLDS</jndi-name>
</resource-ref>
</jboss-web>
我想使用来自 wildfly9 的数据源通过 spring jpa 部署一个应用程序,我想我已经完成了所有需要的配置,但我收到了一个错误。
我有的是 standalon.xml 在子系统中
<datasource jndi-name="java:jboss/datasources/PostgreSQLDS"
jta="true" enabled="${postgresql.enabled}"
use-java-context="true"
pool-name="PostgreSQLDS"
use-ccm="true">
<connection-url>
jdbc:postgresql://${env.OPENSHIFT_POSTGRESQL_DB_HOST}:${env.OPENSHIFT_POSTGRESQL_DB_PORT}/${env.OPENSHIFT_APP_NAME}
</connection-url>
<driver>postgresql</driver>
<security>
<user-name>${env.OPENSHIFT_POSTGRESQL_DB_USERNAME}
</user-name>
<password>
${env.OPENSHIFT_POSTGRESQL_DB_PASSWORD}
</password>
</security>
<validation>
<check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
<background-validation>true</background-validation>
<background-validation-millis>60000</background-validation-millis>
</validation>
<pool>
<flush-strategy>IdleConnections</flush-strategy>
</pool>
</datasource>
<drivers>
<driver name="postgresql" module="org.postgresql.jdbc">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
</drivers>
我的spring.profile.xml有
<beans:bean id="dbDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<beans:property name="jndiName" value="java:jboss/datasources/PostgreSQLDS"/>
</beans:bean>
我得到的错误是
[0m[31m08:57:40,995 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "ROOT.war")]) - failure description: {"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.persistenceunit.\"ROOT.war#my-jpa\".__FIRST_PHASE__ is missing [jboss.naming.context.java.\"\n java:comp\".env.jdbc.\"PostgreSQLDS\n \"]",
"jboss.persistenceunit.\"ROOT.war#my-jpa\" is missing [jboss.naming.context.java.\"\n java:comp\".env.jdbc.\"PostgreSQLDS\n \"]"
]}
我不确定我做错了什么,欢迎任何帮助
使用 java 尝试此 JNDI 资源映射:comp/env 并且您需要使用 jboss-[= 在您的应用程序中引用数据源资源19=] 下面。
<beans:bean id="dbDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<beans:property name="jndiName" value="java:comp/env/jdbc/PostgreSQLDS"/>
</beans:bean>
在 WEB-INF 文件夹中添加 jboss-web.xml 内容
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.jboss.com/xml/ns/javaee
http://www.jboss.org/j2ee/schema/jboss-web_5_1.xsd">
<context-root>/myAppRoot</context-root>
<resource-ref>
<res-ref-name>jdbc/PostgreSQLDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<jndi-name>java:jboss/datasources/PostgreSQLDS</jndi-name>
</resource-ref>
</jboss-web>