0

Thorntail/Swarm アプリ用に 2 つの xa-datasources が必要ですが、関連情報をどこに置くべきかわかりません。私が読んだことから、たとえば、project-default.ymlファイルが必要だと思われます:

 swarm:
  datasources:
    xa-data-sources:
      statsDS:
        driver-name: postgresql
        connection-url: jdbc:postgresql://postgres:5432/stats
        user-name: stats
        password: stats++
      OracleDS:
        driver-name: oracle
        connection-url: jdbc:oracle:thin:@oracle:1521:XE
        user-name: ora
        password: ora++
    jdbc-drivers:
      oracle: 
        driver-class-name: oracle.jdbc.OracleDriver
        xa-datasource-class: oracle.jdbc.xa.client.OracleXADataSource
        driver-module-name: com.oracle
      postgresql:
        driver-class-name: org.postgresql.Driver
        xa-datasource-class: org.postgresql.xa.PGXADataSource
        driver-module-name: org.postgresql

また、*-ds.xml ファイルもいくつかあります。これらの *-ds.xml ファイルには、project-default.yml と同じ情報がいくつか見つかります。たとえば、 oracle-ds.xml :

<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd">
    <!-- The datasource is bound into JNDI at this location. We reference this 
        in META-INF/persistence.xml -->
    <xa-datasource
        jndi-name="java:jboss/datasources/oracleDS" pool-name="oracle">
        <xa-datasource-property name="URL">
            jdbc:oracle:thin:@oracle:1521:XE
        </xa-datasource-property>
        <driver>oracle</driver>
        <security>
            <user-name>ora</user-name>
            <password>ora++</password>
        </security>
        <validation>
            <valid-connection-checker
                class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker" />
            <stale-connection-checker
                class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker" />
            <exception-sorter
                class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter" />
        </validation>
    </xa-datasource>
</datasources>

これら 2 つのファイルに同じ情報 (ドライバー、ユーザー、パスワード、URL) があるのはなぜですか?

とにかく、このconfは機能しません:

2018-09-30 14:07:19,377 ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 6) WFLYCTL0013: Operation ("add") failed - address: ([
    ("subsystem" => "datasources"),
    ("xa-data-source" => "statsDS")
]) - failure description: "WFLYCTL0155: 'jndi-name' may not be null"

postgresql-ds.xml を完成させるために:

<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd">
    <xa-datasource jndi-name="java:jboss/datasources/statsDS"
        pool-name="PostgresXADS">
        <xa-datasource-property name="URL">
            jdbc:postgresql://postgres:5432/stats
        </xa-datasource-property>
        <driver>postgresql</driver>
    <security>
            <user-name>stats</user-name>
            <password>stats++</password>
        </security>
        <validation>
            <valid-connection-checker
                class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker">
            </valid-connection-checker>
            <exception-sorter
                class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter">
            </exception-sorter>
        </validation>
    </xa-datasource>
</datasources>

project-default.yml を使用せず、*-ds.xml ファイルのみを使用すると、次のようになります。

"WFLYCTL0412: Required services that are not installed:" => ["jboss.jdbc-driver.oracle"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.data-source.\"jboss.naming.context.java.jboss.datasources.oracleDS\" is missing [jboss.jdbc-driver.oracle]"]

resources/modules/com/oracle/main ディレクトリに module.xml と ojdbcxxx.jar があると正確に言えます。

では、プロジェクトで 2 つの XA データソースを動作させるにはどうすればよいでしょうか? ありがとう ...

4

2 に答える 2