webentwicklung-frage-antwort-db.com.de

WFLYCTL0412: Erforderliche Dienste, die nicht installiert sind:

Ich versuche, eine Datenquelle in Wildfly 10.0 hinzuzufügen, aber wenn ich die Verbindung teste, wird folgende Fehlermeldung ausgegeben:

Unexpected HTTP response: 500

Request
{
    "address" => [
        ("subsystem" => "datasources"),
        ("data-source" => "PostgreCrawlazo")
    ],
    "operation" => "test-connection-in-pool"
}

Response

Internal Server Error
{
    "outcome" => "failed",
    "failure-description" => "WFLYJCA0040: failed to invoke operation: WFLYJCA0042: failed to match pool. Check JndiName: Java:/crawlazo",
    "rolled-back" => true,
    "response-headers" => {"process-state" => "reload-required"}
}

Der Fehler aus dem Serverprotokoll:

2016-09-01 16:28:40,524 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([
    ("subsystem" => "datasources"),
    ("data-source" => "PostgreCrawlazo")
]) - failure description: {
    "WFLYCTL0412: Required services that are not installed:" => [
        "jboss.jdbc-driver.postgres",
        "jboss.jdbc-driver.postgres"
    ],
    "WFLYCTL0180: Services with missing/unavailable dependencies" => [
        "jboss.driver-demander.Java:/crawlazo is missing [jboss.jdbc-driver.postgres]",
        "org.wildfly.data-source.PostgreCrawlazo is missing [jboss.jdbc-driver.postgres]",
        "org.wildfly.data-source.PostgreCrawlazo is missing [jboss.jdbc-driver.postgres]"
    ]
}

ich repliziere dieselben Konfigurationsdateien aus standalone.xml und module.xml

hier ist ein Teil, wie ich die Datenquelle in standalone.xml einrichte:

 <datasource jndi-name="Java:/crawlazo" pool-name="PostgreCrawlazo" enabled="true">
                    <connection-url>jdbc:postgresql://x.x.x.x:5432/crawlazo</connection-url>
                    <driver>postgres</driver>
                    <pool>
                        <min-pool-size>1</min-pool-size>
                        <max-pool-size>40</max-pool-size>
                    </pool>
                    <security>
                        <user-name>someUser</user-name>
                        <password>somePasswd</password>
                    </security>
                </datasource>
                <drivers>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                    <driver name="postgres" module="org.postgres">
                        <driver-class>org.postgresql.Driver</driver-class>
                    </driver>
            </drivers>

und die module.xml:

<module xmlns="urn:jboss:module:1.0" name="org.postgresql">
    <resources>
        <resource-root path="postgresql-9.2-1004.jdbc3.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

Ich habe eine postgresql-9.2-1004.jdbc3.jar im Bereitstellungsordner.

Warum erscheint dieser Fehler? was hätte ich zur config vergessen können?

14
B.J. A.A.

Die Treiberjar sollte sich im Modulordner nicht im Bereitstellungsordner befinden, da Sie dies beim Schreiben folgendermaßen angeben:

<resources>
    <resource-root path="postgresql-9.2-1004.jdbc3.jar"/>
</resources>
7
ehsavoie

Ich habe meine Arbeit so gemacht:

1 - Erstellen Sie einen Ordner im WildFly-Installationsverzeichnis: \modules\org\postgres\main

2 - Erstellen Sie eine "module.xml" im Ordner oben mit dem Inhalt:

<?xml version='1.0' encoding='UTF-8'?>
<module xmlns="urn:jboss:module:1.1" name="org.postgres">

    <resources>
        <resource-root path="postgresql-9.4-1204-jdbc4.jar"/>
    </resources>

    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        <module name="javax.servlet.api" optional="true"/>
    </dependencies>
</module>

3 - Kopieren Sie die Treiber-JAR-Datei in den gleichen Ordner wie in Schritt 1

4 - fügen Sie die Datenquelle in standalone.xml hinzu:

<datasource jta="false" jndi-name="Java:jboss/datasources/YourDS" pool-name="YourDS" enabled="true" use-ccm="false">
    <connection-url>jdbc:postgresql://localhost:5432/yourDB</connection-url>
    <driver>postgres</driver>
    <security>
        <user-name>user</user-name>
        <password>pass/password>
    </security>
    <validation>
        <validate-on-match>false</validate-on-match>
        <background-validation>false</background-validation>
    </validation>
    <statement>
        <share-prepared-statements>false</share-prepared-statements>
    </statement>
</datasource>

<drivers>
    <driver name="postgres" module="org.postgres">
        <driver-class>org.postgresql.Driver</driver-class>
    </driver>
</drivers>
5
Andre Fellows

So habe ich meine xa-datasources mit jboss-cli .__ erstellt. Konsole:

Zuerst habe ich den Treiber in / opt/wildfly/modules/system/layer/base/org/postgresql/main hinzugefügt. Hinweis Ich habe die Datei für das Treibermodul erstellt, aber auch das Glas hinzugefügt

[[email protected] main]# ls -lrta
total 776
drwxr-xr-x. 3 root    root        18 abr  4 17:10 ..
-rwxr-xr-x. 1 wildfly wildfly 790405 abr  4 17:14 postgresql-42.2.2.jar
-rwxr-xr-x. 1 wildfly wildfly    278 abr 17 17:25 module.xml
drwxr-xr-x. 2 root    root        53 abr 17 19:40 .
[[email protected] main]# cat module.xml
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="org.postgresql" >
<resources>
<resource-root path="postgresql-42.2.2.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>

Als Nächstes habe ich die Datenquelle auf der Konsole erstellt

jboss-cli.sh --connect --controller=192.168.119.116:9990 --commands='xa-data-source add --name=FrontEndDSXA --profile=full --driver-name="postgresql" --enabled="true" --use-ccm="true" --jndi-name="Java:jboss/datasources/FrontEndDSXA" --user-name="user" --password="password" --validate-on-match=true --background-validation=false --prepared-statements-cache-size=50 --share-prepared-statements=true --min-pool-size=5 --max-pool-size=150 --pool-prefill=true --transaction-isolation=TRANSACTION_READ_COMMITTED --check-valid-connection-sql="select 1;" --xa-datasource-properties={ "DatabaseName"=>"frontend", "PortNumber"=>"5432", "ServerName"=>"192.168.119.114" }'

Fügen Sie als Nächstes das Profil full zu my-server-group in domain.xml hinzu

<server-groups>
    <server-group name="my-server-group" profile="full">
        <jvm name="default">
            <heap size="64m" max-size="512m"/>
        </jvm>
        <socket-binding-group ref="full-sockets"/>
    </server-group>
</server-groups>

Schließlich lud ich Wildfly neu (in meinem Fall war Host master als Standard)

/opt/wildfly/bin/jboss-cli.sh --connect --controller=192.168.119.116:9990 --commands="reload --Host=master"

Jetzt können alle Server in meiner Servergruppe die Datenquelle sehen.

Ich hoffe es hilft