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点のみ.