ASi

Wildfly に XA datasource として MySQL Connector/J をインストール

MySQL Connector/J

Connector/J のアーカイブ内には下記があるが、-binを使う。 < https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-installing-classpath.html
mysql-connector-java-5.1.48-bin.jar
mysql-connector-java-5.1.48.jar

mkdir -p wildfly-18.0.0.Final/modules/system/layers/base/com/mysql/main
cp ~/Downloads/mysql-connector-java-5.1.48/mysql-connector-java-5.1.48-bin.jar wildfly-18.0.0.Final/modules/system/layers/base/com/mysql/main/

module.xml

wildfly-18.0.0.Final/modules/system/layers/base/com/h2database/h2/main/module.xml を参考に wildfly-18.0.0.Final/modules/system/layers/base/com/mysql/main/module.xml を置く。

<?xml version="1.0" encoding="UTF-8"?>
<module name="com.mysql" xmlns="urn:jboss:module:1.5">
    <resources>
        <resource-root path="mysql-connector-java-5.1.48-bin.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

standalone.xml

wildfly-18.0.0.Final/standalone/configuration/standalone.xml下に以下を追加

<driver name="mysql" module="com.mysql">
    <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>

Datasource

wildfly-18.0.0.Final/standalone/configuration/standalone.xml 下に以下を追加

<xa-datasource jndi-name="java:/TestDB" pool-name="TestDB" enabled="true">
    <xa-datasource-property name="URL">
        jdbc:mysql://localhost:3306/TestDB?useSSL=false&amp;useGmtMillisForDatetimes=true&amp;socketTimeout=10000
    </xa-datasource-property>
    <driver>mysql</driver>
    <transaction-isolation>TRANSACTION_REPEATABLE_READ</transaction-isolation>
    <xa-pool>
        <min-pool-size>3</min-pool-size>
        <initial-pool-size>3</initial-pool-size>
        <max-pool-size>6</max-pool-size>
        <prefill>true</prefill>
        <flush-strategy>FailingConnectionOnly</flush-strategy>
    </xa-pool>
    <security>
        <user-name>root</user-name>
        <password>root</password>
    </security>
    <validation>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
        <background-validation>true</background-validation>
        <background-validation-millis>60000</background-validation-millis>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
    </validation>
    <statement>
        <share-prepared-statements>false</share-prepared-statements>
    </statement>
</xa-datasource>

persistence.xml

上記の jndi-name を persistence.xml

<jta-data-source>java:/TestDB</jta-data-source> 

として参照する。