2008年6月30日 星期一

JBoss AS 搭配 MySQL XA DataSource 設定方式

多方參考網路上的設定,測試之後,發現以下的內容就足夠了:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<xa-datasource>
<jndi-name>YourDataSourceName</jndi-name>
<xa-datasource-class>
com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
</xa-datasource-class>
<xa-datasource-property name="URL">
jdbc:mysql://localhost:3306/DBName
</xa-datasource-property>
<user-name>YourUsername</user-name>
<password>YourPassword</password>
<track-connection-by-tx>
true
</track-connection-by-tx>
<new-connection-sql>
set autocommit=1
</new-connection-sql>
<no-tx-separate-pools>
true
</no-tx-separate-pools>
<exception-sorter-class-name>
org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</xa-datasource>
</datasources>
檔案名稱按照 JBoss AS 的規定,必須以「-xa-ds.xml」結尾,比方說「yourdb-xa-ds.xml」,放在使用組態下的 deploy 目錄即可。

這邊有一件事要注意到,因為 JBoss 本身處理的不夠完善,所以像底下這樣 Pretty-Format 過的寫法會出問題:
<xa-datasource-property name="URL">
jdbc:mysql://localhost:3306/DBName
</xa-datasource-property>
必須改成底下的寫法:
<xa-datasource-property name="URL">jdbc:mysql://localhost:3306/DBName</xa-datasource-property>
這種 Bug 至少在 2003 年 8 月 JBoss 就已經承認,詳見這裡,可是到現在已經 5.0.1 GA 版本了,還是依然存在。

沒有留言: