web-dev-qa-db-fra.com

Comment ajouter une source de données PostgreSQL à WildFly 9.0?

J'ai essayé le didacticiel sur mastertheboss.com :

  1. ./jboss-cli.sh
  2. module add --name=org.postgres --resources=/tmp/postgresql-9.3-1101.jdbc41.jar --dependencies=javax.api,javax.transaction.api
  3. /subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver)
  4. 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 pas avec WildFly 9.0. La 3ème étape échoue avec un message d'erreur:

{
"outcome" => "failed",
"failure-description" => "WFLYJCA0041: Failed to load module for driver [org.portgres]",
"rolled-back" => true
}

Comment ajouter une source de données Postgres à WildFly 9.0?

9
czerny

J'ai rencontré la même erreur et le même comportement de WildFly 9. Je suis un débutant en WF, mais après quelques recherches, j'ai constaté que le problème venait du nom du module . Si je l'obtiens bien, les noms de package réels dans le module sont utilisés pour résoudre le chemin d'accès à module.xml. 
J'ai changé les étapes à celles ci-dessous et cela a fonctionné:

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)
7
ragelh

Je cours 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

Où module.xml est

<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>

Et autonome contient le pilote:

<driver name="postgresql" module="org.postgres">
    <xa-datasource-class>org.postgresql.Driver</xa-datasource-class>
</driver>

alors la 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 postgres. Dans votre cas, peut être localhost.

Comment je me suis retrouvé avec l'erreur mentionnée par vous: 1. nom de fichier mal orthographié 2./modules/org ... etc contient une faute de frappe 3. module.xml mal orthographié en tant que modules.xml 4. ...

7
Mircea Stanciu

C'est très simple, mais cela pourrait prendre plus de temps si vous êtes nouveau avec JBOSS EAP/WilFly Procédez comme suit pour créer une source de données:

  1. Accédez au dossier bin du serveur où se trouve le fichier jboss-cli (script d'alimentation): right click on jboss-cli(power script file)--> Run with power Shell (une console s'ouvre).

  2. Ajouter le pilote JDBC PostgreSQL en tant que module principal.

module add --name = com.postgresql --resources =/path/to/postgresql-9.3-1102.jdbc4.jar --dependencies = javax.api, javax.transaction.api

  1. Enregistrez le pilote JDBC PostgreSQL.

/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=com.postgresql,driver-xa-datasource-class-name=org.org.postgresql.xGXADataSource)

  1. Ajouter la source de données PostgreSQL.

source de données add --name = PostgresDS --jndi-name = Java: jboss/PostgresDS --driver-name = postgresql --connection-url = jdbc: postgresql: // localhost: 5432/postgresdb --user-name = admin --password = admin --validate-on-match = true --background-validation = false --valid-connection-checker-class-name = org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker --exception-sorter-class-name = org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter

faites attention avec chemin chemin/ c'est le chemin où votre _ téléchargé Postgresql-jdbc.jar est présent.

2
Sai prateek

Placez votre pilote JDBC Postgres dans le dossier de déploiement (il suffit de 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 l'ajout de sources de données par la console Web ne fonctionne pas. Par CLI fonctionne.

La solution appropriée pour étendre les pilotes JDBC consiste à ajouter un pilote en tant que module au serveur . Dans WildFly 9, vous pouvez le faire à l’aide de la console cli. Vous ne pouvez pas faire cela en copiant le fichier jar JDBC (avec xml) dans le dossier "module" 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 lister les pilotes installés, entrez:

/subsystem=datasources:installed-drivers-list

Avec le pilote, créer des sources de données sera facile.

Veuillez utiliser la version 9.0 finale. En CR sont des bugs.

Cordialement, Pawel M

1
Dentka Pawel M

Juste une remarque: j’ai testé les commandes CLI, tirées du tutorial mentionne, contre WildFly 10 et que cela fonctionne correctement pour la création du pilote JDBC et de la source de données . log rapporté contient une mauvaise orthographe du nom du module ("org.portgres"):

{
"outcome" => "failed",
"failure-description" => "WFLYJCA0041: Failed to load module for driver [org.portgres]",
"rolled-back" => true
}

Disclaimer: je suis le propriétaire de mastertheboss.com

0

Vous ne mentionnez pas votre version de Java/jdbc. Je viens de rencontrer le même problème et cela était dû à une incompatibilité pilote/Java 1.8. Avez-vous également mis à niveau Java avec la mise à niveau Wildfly 9?

Le ".jdbc41." la version du pilote est construite pour Java 1.7. Postgres contient une matrice indiquant les combinaisons de versions de pilotes Java/JDBC et Postgres compatibles. Peut-être avez-vous besoin de: postgresql-9.4.1209.jar (qui est pour 1.8/jdbc42)

Puis dans la CLI (en supposant que le mode de domaine et le profil = complet)

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
0
Stephen