【问题标题】:Where to put -ds.xml?在哪里放置-ds.xml?
【发布时间】:2018-03-27 05:29:26
【问题描述】:

我无法按照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 文件放在部署文件夹中,我只有一个 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]"
    ]
}

【问题讨论】:

    标签: java jpa wildfly


    【解决方案1】:

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

    【讨论】:

    • 在两个地方都使用“java:jboss/datasources/DvdRental4”并没有解决它,已经尝试过了。这个 JNDI 视图是什么以及如何使用它?
    • 图形方式也适用于我,导航到管理控制台并选择:运行时 -> 独立服务器 -> 子系统 -> JNDI 视图 -> 视图
    • 我在任何地方都找不到它,无论是在数据源下还是其他任何地方..
    【解决方案2】:

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

    【讨论】:

    【解决方案3】:

    我想我只是将 *-ds.xml 文件放在我的 maven 项目的 project/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。

    【讨论】:

      猜你喜欢
      • 2011-06-29
      • 2011-02-15
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-13
      相关资源
      最近更新 更多