顯示具有 DataSource 標籤的文章。 顯示所有文章
顯示具有 DataSource 標籤的文章。 顯示所有文章

2008年9月8日 星期一

GlassFish 的 DataSource

上課的時候,為了兼顧輕便與佔有率的考量,我喜歡用 MySQL 作為 Database Server。MySQL 預設的管理者帳號沒有密碼,一直以來使用上也沒出過什麼大問題。

這幾天有個課程需要用到 GlassFish,就在 GlassFish 裡頭定義了一個 MySQL 的 DataSource。沒想到,問題發生了:GlassFish 抱怨我的 DataSource 沒有設定 PasswordCredential,可是我的 MySQL 管理者帳號真的沒設定密碼啊!

試了半天之後,沒有什麼進展,所以我最後還是決定,幫我的 MySQL 管理者帳號設定密碼。然後,一切就搞定了!

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 版本了,還是依然存在。

Hibernate 與 MySQL 的 XA DataSource

這幾天一直在測 Hibernate 與 JTA,所以就一直試著設定 MySQL 的 MysqlXADataSource。

奇怪的是,JDBC 搭配 XA DataSource 一直沒問題,可是 Hibernate 搭配 XA DataSource 一直都不成功,不斷顯示 null source 這個訊息。

Google 搜尋了半天,好不容易看到有人也有類似的問題。解法也很爆笑,把 MySQL Connector/J 從 5.1.6 Downgrade 到 5.0.8 版,就搞定了!