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>