我正在尝试在Mac OS上的Wildfly 10 Application Server中配置PostgreSQL数据源。我正在按照说明书的规定行事。我创建了一个订单:
/wildfly-10.1.0.Final/modules/system/layers/base/org/postgresql/main.
按此顺序我放了JDBC驱动程序:
postgresql-9.3-1104.jdbc4.jar
我创建了一个module.xml
文件:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="org.postgresql“>
<resources>
<resource-root path="postgresql-9.3-1104.jdbc4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
在standalone.xml文件中,我在datasources下创建了数据源:
<datasource jndi-name="java:jboss/datasources/PostgresDS" pool-name="PostgresDS" enabled="true"
use-java-context="true">
<connection-url>jdbc:postgresql://localhost:5432/testdb</connection-url>
<driver>postgresql</driver>
<security>
<user-name>user</user-name>
<password>password</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"></valid-connection-checker>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"></exception-sorter>
</validation>
</datasource>
和司机:
<drivers>
<driver name="postgresql" module="org.postgresql">
<datasource-class>org.postgresql.Driver</datasource-class>
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
</drivers>
但是没有安装数据源是不可能的,当我启动服务器时,我收到消息(错误):
ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("data-source" => "PostgresDS")
]) - failure description: {
"WFLYCTL0412: Required services that are not installed:" => ["jboss.jdbc-driver.postgresql"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"org.wildfly.data-source.PostgresDS is missing [jboss.jdbc-driver.postgresql]",
"jboss.driver-demander.java:jboss/datasources/PostgresDS is missing [jboss.jdbc-driver.postgresql]"
]
}
[org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("data-source" => "PostgresDS")
]) - failure description: {
"WFLYCTL0412: Required services that are not installed:" => [
"jboss.jdbc-driver.postgresql",
"jboss.jdbc-driver.postgresql"
],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"org.wildfly.data-source.PostgresDS is missing [jboss.jdbc-driver.postgresql]",
"jboss.driver-demander.java:jboss/datasources/PostgresDS is missing [jboss.jdbc-driver.postgresql]",
"org.wildfly.data-source.PostgresDS is missing [jboss.jdbc-driver.postgresql]"
]
}
似乎wildfly
可能找不到该模块。是什么原因造成了这个问题?我的配置有什么问题吗?
答案 0 :(得分:9)
我想建议您更改流程。虽然您当然可以手动执行此操作,但如果您编写此脚本,则可以重复执行此操作。
这取决于jboss-cli.sh。我有一个看起来像的脚本:
embed-server --std-out=echo --server-config=standalone.xml
batch
module add --name=org.postgres --resources=/tmp/postgresql-42.0.0.jar --dependencies=javax.api,javax.transaction.api
/subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver)
/subsystem=datasources/data-source=myDataSource/:add(connection-url=jdbc:postgresql://localhost:5432/thedatabasename,driver-name=postgres,jndi-name=java:/jdbc/myDataSource,initial-pool-size=4,max-pool-size=64,min-pool-size=4,password=theDatabasePassword,user-name=theDatabaseUsername)
run-batch
这与:
一起运行bin/jboss-cli.sh --file=/path/to/file/wildflyconf.cli
该脚本首先使用“embed-server”命令启动,以便您的Wildfly实例不需要运行。然后它启动一批命令作为一个单元运行。
重要的是我们通过命令行创建模块。你必须将PostgreSQL jar放在某处,但除此之外,脚本负责在“modules”下创建所有需要的文件。
接下来,我们添加JDBC驱动程序,然后根据驱动程序创建数据源。
脚本的优点是您可以将其检入源代码控制系统,任何人都可以运行它。它减少了拼写错误的可能性,您无需手动创建和修改文件。
只是一个想法。拥有可重复的流程,开发团队可以使用它始终是一件有用的事情。
答案 1 :(得分:1)
您将Driver类定义为Datasource类:
<datasource-class>org.postgresql.Driver</datasource-class>
请使用正确的元素:
<driver-class>org.postgresql.Driver</driver-class>
就像@stdunbar在他的CLI命令中显示的那样:
/subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver)
答案 2 :(得分:0)
在第二行更改的文件module.xml中
<module xmlns="urn:jboss:module:1.3" name="org.postgresql“>
到
<module xmlns="urn:jboss:module:1.3" name="org.postgresql">
&#39; &#34; &#39;可能是你的module.xml中的问题
答案 3 :(得分:0)
在standalone.xml
中设置以下系统属性,它应该可以正常工作:
-Dorg.kie.server.persistence.dialect = org.hibernate.dialect.PostgreSQLDialect
-Dorg.kie.server.persistence.ds = java:jboss / datasources / yourDataSource
<system-properties>
<property name="org.kie.server.persistence.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
<property name="org.kie.server.persistence.ds" value="java:jboss/datasources/ExampleDS"/>
</system-properties>
答案 4 :(得分:0)
我刚刚在 Wildfly-20.0.1.Final 中遇到了这个问题。我通过将 Postgres 模块添加到 /Wildfly-20.0.1.Final/modules/org/postgresql/main
因此,解决此问题的方法是将模块从
/wildfly-10.1.0.Final/modules/system/layers/base/org/postgresql/main
到
/wildfly-10.1.0.Final/modules/org/postgresql/main