Comment ajouter PostgreSQL datasource à WildFly 9.0?

j'ai essayé le tutoriel à 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 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?

8
demandé sur czerny 2015-07-04 19:29:53

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)
7
répondu ragelh 2015-08-26 08:22:37

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

8
répondu Mircea Stanciu 2016-06-12 07:20:39

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:

  1. 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).

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

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

2
répondu Sai prateek 2016-06-25 10:40:37

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

1
répondu Dentka Pawel M 2015-07-07 10:03:00

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
0
répondu Stephen 2016-08-19 15:11:13

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
}
0
répondu Francesco Marchioni 2016-10-03 20:25:56