web-dev-qa-db-ja.com

WFLYCTL0412:インストールされていない必須サービス:

Wildfly 10.0でデータソースを追加しようとしていますが、接続をテストすると、このエラーメッセージがスローされます。

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

サーバーログからのエラー:

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

standalone.xmlとmodule.xmlから同じ構成ファイルを複製しています

ここに、standalone.xmlでデータソースを設定する方法の一部を示します。

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

および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>

展開フォルダーにpostgresql-9.2-1004.jdbc3.jarがあります。

このエラーが表示される理由私が設定するのを忘れていたでしょうか?

15
B.J. A.A.

あなたが書いたときにこれを暗示しているので、ドライバーjarは展開フォルダーではなくモジュールフォルダーにあるべきです:

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

私はこのように働いています:

1-WildFlyインストールディレクトリにフォルダーを作成します:\ modules\org\postgres\main

2-コンテンツを含む上記のフォルダーに「module.xml」を作成します。

<?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-ドライバーJARファイルをステップ1と同じフォルダーにコピーします

4-standalone.xmlにデータソースを追加します。

<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>
6
Andre Fellows

これは、xa-datasourcesを作成する方法でしたjboss-cliコンソールを使用

最初に、ドライバーを/ opt/wildfly/modules/system/layers/base/org/postgresql/mainに追加しました。ドライバーモジュール用のファイルを作成したが、jarも追加したことに注意してください。

[root@localhost 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 .
[root@localhost 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>

次に、コンソールでデータソースを作成しました

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

次に、プロファイルfullをdomain.xmlのmy-server-groupに追加しました

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

最後に、Wildflyをリロードしました(私の場合、ホストはデフォルトでmasterでした)

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

これで、my-server-group上のすべてのサーバーがデータソースを見ることができます。

それが役に立てば幸い