2017-04-14 6 views
1

Ich versuche eine PostgreSQL-Datenquelle in Wildfly 10 Application Server unter Mac OS zu konfigurieren. Ich mache, was die Anweisungen vorschreiben. Ich habe eine Bestellung erstellt:Konfiguration der Datenquelle in Wildfly 10

/wildfly-10.1.0.Final/modules/system/layers/base/org/postgresql/main. 

In dieser Reihenfolge ich den JDBC-Treiber gesetzt haben:

postgresql-9.3-1104.jdbc4.jar 

und ich habe eine module.xml Datei erstellt:

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

Im standalone.xml Datei Ich habe die Datenquelle unter Datenquellen erstellt:

und Treiber als:

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

Allerdings ist es unmöglich, die Datenquelle nicht installiert ist, und wenn ich den Server zu starten erhalte ich die Meldung (Fehler):

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]" 
     ] 
    } 

Es scheint, dass wildfly vielleicht findet das Modul nicht. Irgendwelche Ideen, was dieses Problem verursacht? Stimmt etwas in meiner Konfiguration nicht?

+0

ich die Datenquellenklasse geändert haben in org.postgresql. xa.PGXADataSource und dann ist die Konfiguration erfolgreich. – arjacsoh

Antwort

6

Ich möchte eine Änderung an Ihrem Prozess empfehlen. Während Sie das natürlich mit der Hand machen können, können Sie es mit Wiederholbarkeit wiederholen.

Dies ist abhängig von der jboss-cli.sh. Ich habe ein Skript, das wie folgt aussieht:

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 

Das mit ausgeführt wird:

bin/jboss-cli.sh --file=/path/to/file/wildflyconf.cli 

Das Skript beginnt mit dem „embed-Server“ Befehl, so dass Ihre Wildfly Instanz nicht werden müssen laufen . Dann startet eine Reihe von Befehlen, die als eine Einheit ausgeführt werden.

Der wichtige Teil ist, dass wir das Modul über die Befehlszeile erstellen. Sie müssen das PostgreSQL-Jar irgendwo hinstellen, aber ansonsten kümmert sich das Skript darum, alle benötigten Dateien unter "Module" zu erstellen.

Als nächstes fügen wir den JDBC-Treiber hinzu und dann erstellen wir eine Datenquelle basierend auf dem Treiber.

Der Vorteil eines Skripts ist, dass Sie dies in Ihrem Quellcode-Kontrollsystem überprüfen können und jeder es ausführen kann. Es verringert die Möglichkeit eines Tippfehlers und Sie müssen Dateien nicht manuell erstellen und ändern.

Nur ein Gedanke. Ein wiederholbarer Prozess, den Ihr Entwicklungsteam verwenden kann, ist immer eine nützliche Sache.

0

Sie definieren Ihre Treiber-Klasse als Datasource-Klasse:

<datasource-class>org.postgresql.Driver</datasource-class> 

bitte das richtige Element verwenden:

<driver-class>org.postgresql.Driver</driver-class> 

wie @stdunbar Sie in seinem CLI-Befehl zeigte:

/subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver) 
0

in Ihrer Datei module.xml in der 2. Zeile ändern

<module xmlns="urn:jboss:module:1.3" name="org.postgresql“> 

zu

<module xmlns="urn:jboss:module:1.3" name="org.postgresql"> 

die '"' kann das Problem in Ihrem module.xml sein