我无法使用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]"
]
}
答案 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目标。在部署应用程序之前,您需要配置服务器以定义数据源