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 データソースを動作させるにはどうすればよいでしょうか? ありがとう ...