Glassfish中用於建立MS SQL connection pool的JDBC問題

建立MS SQL Server 與 PostgreSQL 的 connection pool 時遇到的問題與解決方法.

在glassfish中,要建立資料庫連接池(connection pool)時,有很多種不同的資料庫可以選,像是MS SQL、postgres、My SQL等等。

在建立 MS SQL Server的連線時,使用預設值一定會出錯,常出錯的訊息是classname錯誤,起因是沒有裝正確的JDBC驅動程式,另一個是沒有輸入正確的classname。

依原廠網頁的介紹:

http://docs.oracle.com/cd/E19159-01/820-4606/beana/index.html

你需要smbase.jarsmsqlserver.jar 和 smutil.jar,但是呢,這三個JAR檔幾乎找不到,所以我們還是回到微軟的網頁,到這裡下載JDBC驅動程式:

http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774

下載後,不要只看軟體的部份,要看一下 help 裡面的說明文件,不然你不會知道classname要輸入什麼。打開help裡面的default.htm後,左邊選「Using Connection Pooling」,會看到右邊說明 Class 是什麼,也就是 com.microsoft.sqlserver.jdbc.SQLServerXADataSource,如果你有別的需求也可以用下面那種。把驅動程式放到Glassfish底下的 lib 目錄中(sqljdbc.jar,另一個後面有4的,是 JDBC 4.0版的)。

1

Resource Type選擇XADataSource,其它的東西,像是Additional Properties中的各種屬性值就填一填,然後按下 Ping 按鈕!

1

 

PostgreSQL 的用法也差不多,pgJDBC在安裝時如果有選,會放在/opt/PostgreSQL/pgJDBC底下,一樣有分3.0版跟4.0版的。

但是如果出問題的話,依下列兩篇的說明,我們必須多費一點功夫 :

https://community.jboss.org/thread/187838?_sscc=t

http://www.liferay.com/community/wiki/-/wiki/Main/PostgreSQL+with+Glassfish#section-PostgreSQL+with+Glassfish-Configuration

也就是要增加一個屬性叫做 JDBC30DataSource,值為 true

增加的方法可以用網頁介面的Additional Properties,也可以用指令,把下面的<POOL_NAME>連同左右角括弧,全都換成你的 pool 名稱即可。

1

 

希望可以解決你的問題~

Leave a Reply

你的電子郵件位址並不會被公開。 必要欄位標記為 *