AntでXAデータソースを動的に追加しちゃう方法
追記:
謎が2つ.ver9.0のドキュメント"http://e-docs.bea.com/wls/docs90/programming/ant_tasks.html"なのにスキーマがver8.1のもののままになってる.MBean Referenceを見るとver8.1からver9.0にかけてかなり一新されている.ドキュメントは本当に正しいのか? global-transactions-protocolが設定されないためデフォルトのOnePhaseCommitで動作していると思われるが,MySQL側のGeneral Logを見るとTwoPhaseCommitな動きをしているかのように見える.障害発生をエミュレートしたケースでも"prepare→rollback"かましてるし.意味分からん.
→まあブラックボックス的に見た場合には想定通りの正しい動きをしているのでこれで自分的にはこれでOKにしときます.これ以上これに時間投入は厳しいし.
#下のエントリとあわせてお読みください.
下に書いたbuild.xmlを以下のように拡張するとあら不思議,新しくドメインを生成してWebLogicをそれを使って起動させ,JMX経由で動的に設定までやってくれちゃう.
<taskdef name="wlserver" classname="weblogic.ant.taskdefs.management.WLServer"/> <taskdef name="wlconfig" classname="weblogic.ant.taskdefs.management.WLConfig"/> <target name="startWebLogic"> <delete dir="tmp"/> <mkdir dir="tmp"/> <wlserver dir="tmp" host="127.0.0.1" port="7001" generateConfig="true" domainname="testDomain" servername="testServer" username="weblogic" password="weblogic" action="start"/> <wlconfig url="t3://localhost:7001" username="weblogic" password="weblogic"> <query domain="testDomain" type="Server" name="testServer" property="testserver"/> <create type="JDBCConnectionPool" name="mysql-xa-pool" property="mysqlxapool"> <set attribute="CapacityIncrement" value="1"/> <set attribute="DriverName" value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"/> <set attribute="InitialCapacity" value="1"/> <set attribute="MaxCapacity" value="10"/> <set attribute="RefreshMinutes" value="0"/> <set attribute="ShrinkPeriodMinutes" value="15"/> <set attribute="ShrinkingEnabled" value="true"/> <set attribute="TestConnectionsOnRelease" value="false"/> <set attribute="TestConnectionsOnReserve" value="false"/> <set attribute="URL" value="jdbc:mysql://localhost/test"/> <set attribute="Targets" value="${testserver}"/> </create> <create type="JDBCTxDataSource" name="MySQL XA DataSource"> <set attribute="JNDIName" value="MysqlXA"/> <set attribute="PoolName" value="mysql-xa-pool"/> <set attribute="Targets" value="${testserver}"/> </create> </wlconfig> </target>
MySQL側で開通確認.
4 Connect @localhost as anonymous on test 4 Query SET NAMES latin1 4 Query SET character_set_results = NULL 4 Query SHOW VARIABLES 4 Query SHOW COLLATION 4 Query SET autocommit=1 4 Query SET autocommit=0 4 Query SET autocommit=0 4 Query SHOW VARIABLES LIKE 'tx_isolation' 4 Query SHOW VARIABLES LIKE 'tx_isolation' 4 Query rollback 4 Quit
○○-ds.xmlをコピペするだけでデータソースをDeployしてくれるJBossのURLDeployScanner+RARDeployerに勝るとも劣らない(絶賛).WebLogic見直したよ.
あとは同じようにAntタスクでJ2EEモジュールをデプロイできれば完璧だな.