J'essaie de configurer une source de données PostgreSQL dans Wildfly 10 Application Server sous Mac OS. Je fais ce que les instructions prescrivent. J'ai créé une commande:
/wildfly-10.1.0.Final/modules/system/layers/base/org/postgresql/main.
Dans cet ordre, j'ai mis le pilote JDBC:
postgresql-9.3-1104.jdbc4.jar
et j'ai créé un fichier 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>
Dans le fichier standalone.xml, j'ai créé la source de données sous 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>
et les pilotes en tant que:
<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>
Cependant, il est impossible que la source de données ne soit pas installée et lorsque je démarre le serveur, je reçois le message (erreur):
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]"
]
}
Il semble que wildfly
ne trouve peut-être pas le module. Des idées ce qui cause ce problème? Quelque chose ne va pas dans ma configuration?
Je voudrais recommander un changement à votre processus. Bien que vous puissiez certainement le faire à la main, si vous écrivez ceci, vous pouvez le faire à nouveau avec répétabilité.
Cela dépend de jboss-cli.sh. J'ai un script qui ressemble à:
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
Ceci est exécuté avec:
bin/jboss-cli.sh --file=/path/to/file/wildflyconf.cli
Le script commence par utiliser la commande "embed-server" afin que votre instance Wildfly ne soit pas nécessairement en cours d'exécution. Ensuite, il lance un lot de commandes à exécuter en une seule unité.
La partie importante est que nous créons le module via la ligne de commande. Vous devrez placer le fichier jar de PostgreSQL quelque part, mais à part cela, le script prend en charge la création de tous les fichiers nécessaires sous "modules".
Ensuite, nous ajoutons le pilote JDBC, puis nous créons une source de données basée sur le pilote.
L'avantage d'un script est que vous pouvez vérifier cela dans votre système de contrôle de code source et que tout le monde peut l'exécuter. Cela réduit la possibilité d'une faute de frappe et vous n'avez pas besoin de créer et de modifier manuellement des fichiers.
Juste une pensée. Avoir un processus reproductible que votre équipe de développement peut utiliser est toujours une chose utile.
dans votre fichier module.xml à la 2e ligne changer
<module xmlns="urn:jboss:module:1.3" name="org.postgresql“>
à
<module xmlns="urn:jboss:module:1.3" name="org.postgresql">
le ' "' peut être le problème dans votre module.xml
Vous définissez votre classe de pilote en tant que classe de source de données:
<datasource-class>org.postgresql.Driver</datasource-class>
veuillez utiliser le bon élément:
<driver-class>org.postgresql.Driver</driver-class>
comme @stdunbar vous a montré dans sa commande CLI:
/subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver)
Définissez les propriétés système suivantes dans standalone.xml
et cela devrait fonctionner correctement:
-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>