在哪里放-ds.xml?

时间:2017-10-15 17:07:10

标签: java jpa wildfly

我无法使用jboss doc建议的-ds.xml文件向我的wildfly服务器添加数据源。我有一个带有persistence.xml的maven项目:

<?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="primary">
      <jta-data-source>java:jboss/datasources/DvdRental4</jta-data-source>
      <properties>
         <property name="hibernate.hbm2ddl.auto" value="create-drop" />
         <property name="hibernate.show_sql" value="true" />
      </properties>
   </persistence-unit>
</persistence>

和项目根目录中的postgres-ds.xml:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
    <local-tx-datasource>
        <jndi-name>DvdRental4</jndi-name>
        <connection-url>jdbc:postgresql://localhost:5432/dvdrental4</connection-url>
        <driver>postgresql-9.4.1208</driver>
        <user-name>postgres</user-name>
        <password>1234</password>
        <metadata>
            <type-mapping>PostgreSQL</type-mapping>
        </metadata>
    </local-tx-datasource>
</datasources>

运行mvn package并部署.war时,出现DvdRental4丢失的错误。所以我想我需要将postgres-ds.xml置于某个特定的位置,但在哪里?或者xml文件可能错了?如果需要,我也可以提供pom.xml。我已经创建了数据库dvdrental4,所以这不应该成为一个问题。

我还在某处读过你必须将-ds.xml文件放在deploy文件夹中,我只有一个wildfly/standalone/deployments文件夹,并把它放在那里没有用。

编辑: Wildfly出现以下错误:

ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 2) WFLYCTL0013: Operation ("full-replace-deployment") failed - address: ([]) - failure description: {
    "WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.jboss.datasources.DvdRental4"],
    "WFLYCTL0180: Services with missing/unavailable dependencies" => [
        "jboss.persistenceunit.\"dvdrental-gruppe-4.war#primary\".__FIRST_PHASE__ is missing [jboss.naming.context.java.jboss.datasources.DvdRental4]",
        "jboss.persistenceunit.\"dvdrental-gruppe-4.war#primary\" is missing [jboss.naming.context.java.jboss.datasources.DvdRental4]"
    ]
}

3 个答案:

答案 0 :(得分:1)

我想我只是将* -ds.xml文件放在我的maven项目的项目/ src / main / webapp / WEB-INF中解决了这个问题,至少没有错误说数据源无法解决被发现。我也稍微更改了postgres-ds.xml:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
    <datasource jndi-name="java:jboss/datasources/DvdRental4" pool-name="DvdRental4"
        enabled="true" use-java-context="true">
        <connection-url>jdbc:postgresql://localhost:5432/dvdrental4</connection-url>
        <driver>postgresql-9.4.1208.jar</driver>
        <security>
            <user-name>postgres</user-name>
            <password>1234</password>
        </security>
    </datasource>
</datasources>

注意:我将驱动程序部署为.jar,这就是为什么我可以直接将驱动程序指定为.jar,我认为。

答案 1 :(得分:0)

您为数据源指定的JNDI名称是&#34; DvdRental4&#34;。但是持久化上下文指定了&#34; java:jboss / datasources / DvdRental4&#34;。我不确定这是否正确。要么尝试&#34; java:jboss / datasources / DvdRental4&#34;在这两个地方或(甚至更好)使用Boss JNDI视图来查看实际部署数据源的位置。

答案 2 :(得分:-1)

部署数据源的能力并不是JBoss 5和AS7重写之间的功能,而只是可部署的jms目标。在部署应用程序之前,您需要配置服务器以定义数据源