WebLogic9.0でMySQL XAを使うための設定方法

この辺でいったんまとめてメモっておこう.WebLogic9.0(Diablo)でMySQL5.xのXA(2相コミット)機能を使うためには以下のように行う.

XADataSourceが実装されているConnector/Jを手に入れる.

今日時点でのConnector/J最新安定板ver3.1.10には入っていない.恐らくver5.0からの導入になると思う.Connector/J ver5.0は以下のURLのver3.2のところから試すことができる.

http://downloads.mysql.com/snapshots.php

ちなみにここ数ヶ月うちがXAあれこれなんちゃらやってるのは,このver5.0のテスト.

WebLogicへのMySQL XAの設定方法は以下.まず$domain/config/config.xmlに以下のような記述を追加する.

  <jdbc-system-resource>
    <name>mysql-xa</name>
    <target>examplesServer</target>
    <descriptor-file-name>jdbc/mysql-xa-jdbc.xml</descriptor-file-name>
  </jdbc-system-resource>

この部分の記述の役目は単にmysql-xa-jdbc.xmlファイルをJDBCデータソース設定ファイルとして読みにいかせるためだけである.このファイル名も便宜的なもの.

そして$domain/config/jdbc/mysql-xa-jdbc.xmlを以下のような感じで記述する.

<?xml version="1.0" encoding="UTF-8"?>
<jdbc-data-source xsi:schemaLocation="http://www.bea.com/ns/weblogic/90/domain.xsd" xmlns="http://www.bea.com/ns/weblogic/90" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls">
  <name>mysql-xa</name>
  <jdbc-driver-params>
    <url>jdbc:mysql://localhost/test</url>
    <driver-name>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</driver-name>
  </jdbc-driver-params>
  <jdbc-connection-pool-params>
    <initial-capacity>2</initial-capacity>
    <max-capacity>10</max-capacity>
    <capacity-increment>1</capacity-increment>
    <shrink-frequency-seconds>900</shrink-frequency-seconds>
    <test-connections-on-reserve>true</test-connections-on-reserve>
    <test-table-name>mysql.user</test-table-name>
  </jdbc-connection-pool-params>
  <jdbc-data-source-params>
    <jndi-name>MysqlDS</jndi-name>
    <global-transactions-protocol>TwoPhaseCommit</global-transactions-protocol>
  </jdbc-data-source-params>
  <jdbc-xa-params/>
</jdbc-data-source>

コネクションプールの設定とかは適当.重要なのは,driver-name要素.これをいままでだったら"com.mysql.jdbc.Driver"にしていたと思うのだけれども,XAなので"com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"にすること.もう1つ,global-transactions-protocolを"TwoPhaseCommit"にすること.

XAではない普通のデータソース設定とほとんど変わらない.異なるのは上記2点のみ.