部落客廣告聯播

2008年6月16日 星期一

eclipse中設定utf-8編碼的java檔匯出java doc

如果你的.java是utf-8編碼的, 使用java doc產生文件時會出錯, 要加參數,
簡言之, 如下圖:

2008年6月7日 星期六

tomcat DBCP 與 MySQL

故事是這樣的:
我的程式直接使用MySQL connector/J JDBC Driver連接資料庫操作都很正常 ,
但透過Tomcat配置的data source(DBCP)取得connection來對資料庫操作 ,
總是不定時的會出現 'No operation allowed after connection closed' 錯誤訊息,
意思是connection已經被關閉掉了,
也換了最新的JDBC Driver, 也換過Tomcat 版本,怎麼試結果都一樣,還是錯,
查了許久也作了trace, 這connection並不是我的程式關掉的,
同時還將程式移到了websphere 並使用websphere中的connection pool, 結果是不會發生這樣的錯誤的。
那麼剩下的兩個可能便是:

  1. DBCP程式關掉的
  2. MySQL server端關掉的

OK, 網上拜神(Google), 搜到許多的線索, 有人說connection url要有autoReconnect=true選項,但這僅適用於連線時間超過八小時者。bug database有類似問提,但早就已經修正好了。 也有人說要改MySQL server的my.ini (my.cnf) ,恩...改了可是還是錯。

OK...上面都是廢言....
解決方案是在 tomcat server.xml中的<context>其內的<resource>標籤(設定DataSource用的)要多一個 屬性 validationQuery="select 1" , 之後便不會再三不五時拿到被關掉的connection了,測底解決。

----------------------------------------------------------------------------------------------

為何如此能解決呢??
我猜想大概是多了validationQuery後, DBCP在做相關資料庫操作時,
若該connection沒被客戶端程式(也就是我的程式)手動關閉connection ,也沒被DBCP關閉connection ,
會先用validationQuery的sql檢查, 是否連線被MySQL server端中斷了 ,如果是就自動再從MySQL server取得一個新的connection。
以上僅是小弟猜測, 因為對DBCP內部運作並不是很熟悉 ,所以如有人能回答請不吝提供正確答案...

-------------------------------------------------------------------------------------------

但... 問題來了....
如果以上我的猜測是正確的..... 那麼DBCP自動從MySQL server再次取得新的connection , 那麼也就代表了我之前被MySQL server端無端close掉的connection若是transaction的(autoCommit=false)不就無端的被中斷掉了,而且我也不會得知..... +.+ \\\
,這樣實在太太太不合理的.....................

所以說呢無端斷線問題暫時解決, 但關於transaction的疑問, 不知有哪位先進可以回答呢??

2008年6月2日 星期一

Sun RowSet bug on JDK 1.4

一直都用rowset很爽, 但今天在JDK 1.4上跑new CachedRowSetImpl()時都是發生NullPointerException, 一開始還以為是DataSource沒設好, 搞了一大圈才知道是rowSet和JDK的版本相容問題,(我使用的rowset版本是最新的jdbc_rowset_tiger-1_0_1-mrel-ri)
解決方法:
把rowset.jar中的 com\sun\rowset\RowSetResourceBundle.properties 拷貝兩份出來,一份改名為RowSetResourceBundle_TW.properties,另一份改名為RowSetResourceBundle_zh-TW.properties,再加到jar檔中同個目錄中.
OK, 最後重啟AP Server,問題解決了.


(對了,最後要感謝提供這個解決方法的好心人)
參考來源:
http://thinkbase.net/w/main/Wiki?2006-04-01+rowset+%E5%8F%82%E8%80%83%E5%AE%9E%E7%8E%B0+jdbc_rowset_tiger-1_0_1-mrel-ri.zip+%E7%9A%84+bug