web-dev-qa-db-de.com

Wie füge ich WildFly 9.0 eine PostgreSQL-Datenquelle hinzu?

Ich habe das Tutorial unter mastertheboss.com ausprobiert:

  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

Dieses Tutorial funktioniert mit WildFly 8.2, aber nicht mit WildFly 9.0. 3. Schritt schlägt mit Fehlermeldung fehl:

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

Wie füge ich eine Postgres-Datenquelle zu WildFly 9.0 hinzu?

9
czerny

Ich bin auf den gleichen Fehler und das gleiche Verhalten von WildFly 9 gestoßen. Ich bin ein kompletter Neuling bei WF, aber nach ein paar Nachforschungen habe ich herausgefunden, dass das Problem in der Modulbenennung liegt. Die tatsächlichen Paketnamen im Modul werden verwendet, um den Pfad zu module.xml aufzulösen. 
Ich habe die folgenden Schritte geändert und es hat funktioniert:

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

Ich laufe wildfly 10 in einem 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

Wo befindet sich module.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>

Und Standalone enthält Treiber:

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

dann kann Datenquelle sein:

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

Beachten Sie, dass mein ndis-db ein Postgres Docker ist. In Ihrem Fall kann localhost sein.

Wie ich mit dem von Ihnen genannten Fehler gelandet bin: 1. Dateiname falsch geschrieben 2./modules/org ... etc enthält einen Tippfehler 3. module.xml als Module.xml falsch geschrieben 4. ...

7
Mircea Stanciu

Es ist sehr einfach, könnte jedoch mehr Zeit in Anspruch nehmen, wenn Sie mit JBOSS EAP/WilFly .__ neu sind. Führen Sie die folgenden Schritte aus, um eine Datenquelle zu erstellen:

  1. Wechseln Sie in den bin-Ordner des Servers, in dem sich die jboss-cli-Datei (Power-Skript) befindet: right click on jboss-cli(power script file)--> Run with power Shell (eine Konsole wird geöffnet).

  2. Füge den PostgreSQL-JDBC-Treiber als Kernmodul hinzu .

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

  1. Registrieren Sie den PostgreSQL-JDBC-Treiber.

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

  1. Füge die PostgreSQL-Datenquelle hinzu.

datenquelle 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

seien Sie vorsichtig mit Pfad Pfad/bis Dies ist der Pfad, in dem Ihr Postgresql-jdbc.jar downloded ist.

2
Sai prateek

Legen Sie den Postgres-JDBC-Treiber im Bereitstellungsordner ab (einfach implementieren) ..__ Verwenden Sie nun die CLI-Konsole und geben Sie den folgenden Befehl ein:

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

Überprüfen Sie, ob Ihr Treiber jdbc4 ist.

Ich weiß nicht warum, aber das Hinzufügen von Datenquellen über die Webkonsole funktioniert nicht. Durch CLI funktioniert.

Die richtige Lösung für die Erweiterung von JDBC-Treibern besteht darin, dem Server einen Treiber als Modul hinzuzufügen ..__ In WildFly 9 können Sie dies über die cli-Konsole tun. Sie können dies nicht tun, indem Sie die JDBC-JAR-Datei (mit XML) in den "Modul" -Ordner wie in WildFly 8 kopieren.

Befehle ausführen:

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)

Um die installierten Treiber aufzulisten, geben Sie Folgendes ein:

/subsystem=datasources:installed-drivers-list

Mit dem Treiber können Datenquellen einfach erstellt werden.

Bitte benutzen Sie 9.0 Final Version. In CR sind Fehler.

Viele Grüße, Pawel M

1
Dentka Pawel M

Nur eine Anmerkung: Ich habe die CLI-Befehle, wie sie aus dem genannten Tutorial stammen, gegen WildFly 10 getestet, und es funktioniert beim Erstellen des JDBC-Treibers und der Datenquelle Das protokollierte Protokoll enthält eine falsche Schreibweise des Modulnamens ("org.portgres"):

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

Haftungsausschluss: Ich bin Inhaber von mastertheboss.com

0

Sie erwähnen Ihre Java/Jdbc-Version nicht. Ich habe gerade das gleiche Problem erlebt und es lag an einem Treiber im Vergleich zu Java 1.8. Haben Sie mit dem Upgrade von wildfly 9 auch Java aktualisiert?

Die ".jdbc41." Die Treiberversion ist für Java 1.7 ausgelegt. Postgres verfügt über eine Matrix, die die Kombinationen von Java/JDBC- und Postgres-Treiberversionen zeigt, die kompatibel sind. Vielleicht benötigen Sie: postgresql-9.4.1209.jar (was für 1.8/jdbc42 gilt)

Dann in der CLI (vorausgesetzt, Domänenmodus und -profil = voll)

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