Comment ajouter PostgreSQL datasource à WildFly 9.0?
j'ai essayé le tutoriel à mastertheboss.com:
./jboss-cli.sh
module add --name=org.postgres --resources=/tmp/postgresql-9.3-1101.jdbc41.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)
data-source add --jndi-name=java:/PostGreDS --name=PostgrePool --connection-url=jdbc:postgresql://localhost/postgres --driver-name=postgres --user-name=postgres --password=postgres
Ce tutoriel fonctionne avec WildFly 8.2, mais il ne fonctionne pas avec WildFly 9.0. 3ème étape échoue avec le message d'erreur:
{
"outcome" => "failed",
"failure-description" => "WFLYJCA0041: Failed to load module for driver [org.portgres]",
"rolled-back" => true
}
comment ajouter Postgresource à WildFly 9.0?
6 réponses
j'ai rencontré la même erreur et le même comportement de WildFly 9. Je suis un internaute novice de WF, mais après quelques recherches, j'ai découvert que le problème est dans le nom du module.
Si je l'obtiens bien, les noms de paquets réels dans le module sont utilisés pour résoudre le chemin vers le module.XML.
J'ai changé les étapes à celles ci-dessous et ça a marché:module add --name=org.postgresql --slot=main --resources=/usr/local/lib/postgresql-9.4-1201.jdbc4.jar --dependencies=javax.api,javax.transaction.api
/subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgresql",driver-class-name=org.postgresql.Driver)
je suis en cours d'exécution wildfly 10 dans un docker:
#ADD DATASOURCES
RUN mkdir -p $JBOSS_HOME/modules/org/postgres/main
COPY files/postgresql-9.4.1208.jre7.jar $JBOSS_HOME/modules/org/postgres/main/
COPY files/module.xml $JBOSS_HOME/modules/org/postgres/main/
COPY files/standalone.xml $JBOSS_HOME/standalone/configuration
module Where.xml
<module xmlns="urn:jboss:module:1.1" name="org.postgres">
<resources>
<resource-root path="postgresql-9.4.1208.jre7.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="javax.servlet.api" optional="true"/>
</dependencies>
</module>
autonome Et contient pilote:
<driver name="postgresql" module="org.postgres">
<xa-datasource-class>org.postgresql.Driver</xa-datasource-class>
</driver>
alors source de données peut être:
<datasource jndi-name="java:jboss/datasources/PostgresDS" pool-name="PostgresDS" enabled="true" use-java-context="true">
<connection-url>jdbc:postgresql://ndis-db:5432/postgres</connection-url>
<driver>postgresql</driver>
...
notez que mon ndis-db est un docker postgrès. Dans votre cas peut-être localhost.
comment j'ai fini avec l'erreur mentionnée par vous: 1. nom de fichier mal orthographié 2. / modules / org ...etc contiennent une faute de frappe 3. module.xml mal orthographié en tant que modules.XML 4. ...
elle est très simple mais peut prendre plus de temps si vous serez de nouveau avec JBOSS EAP / WilFly Utilisez les étapes ci-dessous pour créer une source de données:
allez dans le dossier bin du serveur où le fichier jboss-cli(Power script) est présent:
right click on jboss-cli(power script file)--> Run with power shell
(une console s'ouvre).ajouter le pilote JDBC PostgreSQL comme module core.
module d'ajouter l'option --name=com.PostgreSQL --ressources=/chemin/vers/postgresql-9.3-1102.jdbc4.jar --dépendances=javax.l'api javax.transaction.api
- Enregistrer le pilote JDBC PostgreSQL.
/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=com.postgresql,pilote-xa-datasource-class-name=org.PostgreSQL.xa.PGXADataSource)
source de données ajouter --nom=Postgreds --jndi-Nom = java: jboss/Postgreds --pilote-nom=postgresql --connection-url=jdbc:postgresql://localhost:5432/postgresdb --nom d'utilisateur=admin --mot de passe=admin --valider-sur-match=true --background-validation=false --valide-connexion-checker-class-name=org.jboss.jca.adaptateur.jdbc.extension.postgres.PostgreSQLValidConnectionChecker -- exception-trieuse-class-name=org.jboss.jca.adaptateur.jdbc.extension.postgres.PostgreSQLExceptionSorter
soyez prudent avec chemin d'accès chemin d'accès/ c'est le chemin où vous avez téléchargé Postgresql-jdbc.jar est présent.
mettez votre pilote Postgresjdbc dans le dossier de déploiement (juste déployer). Maintenant, utilisez la console CLI et entrez cette commande:
data-source add --name=PostgresqlDS --jndi-name=java:jboss/datasources/PostgresqlDS --driver-name=postgresql-9.4-1201.jdbc41.jar --connection-url=jdbc:postgresql://localhost:5432/test --user-name=USER --password=PASSWORD
vérifiez si votre pilote est jdbc4.
Je ne sais pas pourquoi mais ajouter des sources de données par console web ne fonctionne pas. Par CLI works.
la bonne solution pour étendre les pilotes JDBC est d'ajouter le pilote comme module au serveur. Dans WildFly 9, Vous pouvez le faire en utilisant CLI console. vous ne pouvez pas faire cela en copiant le fichier jar JDBC (avec xml) dans "module" dossier comme dans WildFly 8.
Exécuter des commandes:
module add --name=org.postgres --resources=postgresql-9.4-1201.jdbc41.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)
Pour la liste instalé les pilotes d'entrée:
/subsystem=datasources:installed-drivers-list
avec le pilote créer des sources de données sera facile.
veuillez utiliser la version finale 9.0. Dans les CR sont des bugs.
ce qui Concerne, Pawel M
Vous ne mentionnez pas votre version java/jdbc. J'ai vécu le même problème et c'était dû à un pilote vs Java 1.8 incompatibilité. Avec la mise à jour wildfly 9, avez-vous aussi mis à jour Java?
Le ".jdbc41."la version pilote est construite pour Java 1.7. Postgres a une matrice montrant les combinaisons des versions Java/JDBC et Postgres qui sont compatibles. Peut-être avez-vous besoin de: postgresql-9.4.1209.jar (qui est pour 1.8 / jdbc42)
puis dans le CLI (en supposant le mode domaine et profil=)
module add --name=org.postgresql.Driver --resources=/tmp/postgresql-9.4.1209.jar
connect
/profile=full/subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgresql.Driver",driver-class-name=org.postgresql.Driver)
exit
juste une note: j'ai testé les commandes CLI, telles qu'elles sont prises dans tutoriel mentionné, contre WildFly 10 et il fonctionne correctement dans la création du Pilote JDBC et la source de données. En outre, je peux voir que le journal des erreurs signalé contient une faute d'orthographe du nom du module ("org.portgres"):
{
"outcome" => "failed",
"failure-description" => "WFLYJCA0041: Failed to load module for driver [org.portgres]",
"rolled-back" => true
}