本文介紹WebSphere下Oracle、SQL
Server、Sybase、MySQL數(shù)據(jù)庫(kù)連接池的配置方法,并給出相應(yīng)調(diào)用連接池的示例。相對(duì)于Weblogic,WebSphere連接池的配置要稍微復(fù)雜一些,因?yàn)槿鄙傧嚓P(guān)的文檔,需要一定的技巧和經(jīng)驗(yàn)。特別是對(duì)于初學(xué)者,完整的配置好Websphere連接池還是有一定難度的。
一、系統(tǒng)準(zhǔn)備
1.在相應(yīng)的數(shù)據(jù)庫(kù)中建立本文用到的表
create?table?TEST(C1?CHAR(10)?)
insert?into?TEST?values('FromTest')
2.準(zhǔn)備環(huán)境變量,此部分往往會(huì)被初學(xué)者忽略。

點(diǎn)擊“管理WebSphere變量”,ORACLE_JDBC_DRIVER_PATH的值輸入操作系統(tǒng)中jar文件(classes12.jar)的位置。
“確認(rèn)”后,界面最上方,點(diǎn)擊“保存”,會(huì)再提示“保存”還是“放棄”,再選“保存”。
為方便起見(jiàn),本文中,SQL
Server的jar文件(msbase.jar、mssqlserver.jar、msutil.jar
)、Sybase的jar文件(jconn2.jar)、mySQL的jar文件(mysql-connector-java-3.1.10-bin.jar)都放在同一目錄(如:C:\oracle\ora92\jdbc\lib)。
3.本文中的所有例子測(cè)試均通過(guò),環(huán)境:Windows2003、WebShpere5.1、ORACLE9I、SQL
Server 2000、SYBASE12.5、MySQL5.0。
二、Oracle、SQL
Server、Sybase、MySQL數(shù)據(jù)庫(kù)連接池在WebSphere中的詳細(xì)配置步驟
(一)、Oracle連接池的配置
1.進(jìn)入管理控制臺(tái)(http://localhost:9090/admin/)
2.選擇:資源->JDBC提供程序,點(diǎn)擊“新建”,建立JDBC提供程序。

點(diǎn)擊“應(yīng)用”后,類路徑中,輸入“${ORACLE_JDBC_DRIVER_PATH}/classes12.jar”,再點(diǎn)擊“應(yīng)用”。
3.定義數(shù)據(jù)源
點(diǎn)擊界面中“數(shù)據(jù)源后”再點(diǎn)擊“新建”,建立數(shù)據(jù)源。

JNDI取名ORACLE_JNDI,點(diǎn)擊“應(yīng)用”。
4.界面上點(diǎn)擊“定制屬性”,定義連接池的JDBC
Driver、URL、用戶名和口令等信息。
點(diǎn)擊“URL”,URL的值輸入:jdbc:oracle:thin:@localhost:1521:MYHORA,其中,localhost可以為ORACLE的IP地址,MYHORA是ORACLE的服務(wù)名稱。
點(diǎn)擊“確定”保存配置。
同樣的方法輸入:
driverType的值oracle.jdbc.driver.OracleDriver
databasename的值MYHORA
servername的值localhost
preTestSQLString的值為SELECT
COUNT(1) FROM
TEST
其余的取默認(rèn)值。
5.本部分比較關(guān)鍵,是初學(xué)著比較困惑的地方。
我們看到,界面上并沒(méi)有輸入用戶名、口令的地方,而沒(méi)有用戶名稱、口令是無(wú)法連接數(shù)據(jù)庫(kù)的。

在“定制屬性”中點(diǎn)擊“新建”,“名稱”中輸入user,“值”中輸入數(shù)據(jù)庫(kù)的用戶名稱,如:study,點(diǎn)擊“確定”;
在“定制屬性”中點(diǎn)擊“新建”,“名稱”中輸入password,“值”中輸入數(shù)據(jù)庫(kù)的口令,如:study,點(diǎn)擊“確定”;
我們看到,“定制屬性”中多了兩個(gè)我們自定義的屬性u(píng)ser、password


6.保存配置,在“定制屬性”界面的最上方點(diǎn)擊“保存”。
7.測(cè)試連接

系統(tǒng)提示:成功信息,表明,連接池配置成功。
連接池配置成功后,WebSphere需要重新啟動(dòng)。
(二)、SQL
server連接池的配置
SQL Server連接池的配置步驟同Oracle,具體的參數(shù)值:
JDBC 提供程序:下拉選擇Microsoft
JDBC driver for MSSQLServer
2000
Sybase連接池的配置步驟也同Oracle,具體的參數(shù)值:
常規(guī)屬性中的名稱:Microsoft JDBC driver for
MSSQLServer 2000
常規(guī)屬性中的描述:Microsoft JDBC driver for MSSQLServer
2000
常規(guī)屬性中的類路徑:
${ORACLE_JDBC_DRIVER_PATH}/msbase.jar
${ORACLE_JDBC_DRIVER_PATH}/mssqlserver.jar
${ORACLE_JDBC_DRIVER_PATH}/msutil.jar
常規(guī)屬性中的實(shí)現(xiàn)類名:默認(rèn)
數(shù)據(jù)源中的名稱:SQLSERVER_JNDI
數(shù)據(jù)源中的JNDI:SQLSERVER_JNDI
定制屬性中的databaseName:數(shù)據(jù)庫(kù)名稱
定制屬性中的serverName:Sybase數(shù)據(jù)庫(kù)服務(wù)器的名稱或IP
定制屬性中的portNumber:端口號(hào)
定制屬性中的preTestSQLString:SELECT
COUNT(1) FROM
TEST
同Oracle,手工“新建”user和password屬性,值為數(shù)據(jù)庫(kù)的用戶名和口令,該用戶的缺省數(shù)據(jù)庫(kù)必須為databaseName的值。
其他默認(rèn)。
(三)、Sybase連接池的配置
JDBC
提供程序:下拉選擇Sybase JDBC Driver
Sybase連接池的配置步驟也同Oracle,具體的參數(shù)值:
常規(guī)屬性中的名稱:SYBASE
JDBC Driver
常規(guī)屬性中的描述:SYBASE JDBC
Driver
常規(guī)屬性中的類路徑:${ORACLE_JDBC_DRIVER_PATH}/jconn2.jar
常規(guī)屬性中的實(shí)現(xiàn)類名:默認(rèn)
數(shù)據(jù)源中的名稱:SYBASE_JNDI
數(shù)據(jù)源中的JNDI:SYBASE_JNDI
定制屬性中的databaseName:數(shù)據(jù)庫(kù)名稱
定制屬性中的serverName:Sybase數(shù)據(jù)庫(kù)服務(wù)器的名稱或IP
定制屬性中的portNumber:端口號(hào)
定制屬性中的preTestSQLString:SELECT
COUNT(1) FROM
TEST
同Oracle,手工“新建”user和password屬性,值為數(shù)據(jù)庫(kù)的用戶名和口令,該用戶的缺省數(shù)據(jù)庫(kù)必須為databaseName的值。
其他默認(rèn)。
(四)、MySQL連接池的配置
MySQL連接池的配置步驟同Oracle稍有不同,JDBC
提供程序中并沒(méi)有MySQL中的選項(xiàng),選Oracle JDBC
Driver就可以,實(shí)際運(yùn)行中,WebSphere是以設(shè)置的參數(shù)為準(zhǔn)的。
具體的參數(shù)值:
常規(guī)屬性中的名稱:MySQL JDBC
Driver
常規(guī)屬性中的描述:MySQL JDBC
Driver
常規(guī)屬性中的類路徑:${ORACLE_JDBC_DRIVER_PATH}/mysql-connector-java-3.1.10-bin.jar
常規(guī)屬性中的實(shí)現(xiàn)類名:com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
數(shù)據(jù)源中的名稱:MYSQL_JNDI
數(shù)據(jù)源中的JNDI:MYSQL_JNDI

由于WebSphere沒(méi)有缺省的MySQL選項(xiàng),“定制屬性”全部需要手工新建。具體的值要根據(jù)MySQL的實(shí)際環(huán)境要做相應(yīng)修改(petshop是我機(jī)器上的數(shù)據(jù)庫(kù)名稱)。
三、應(yīng)用程序中測(cè)試連接池。
1.
jsp程序中測(cè)試連接池
附件中的TestConnPoolWeb.ear文件直接發(fā)布后,
運(yùn)行:http://localhost:9080/TestConnPoolWeb/oracle_pool.jsp,結(jié)果:ORACLE_JNDI:FromTest
運(yùn)行:http://localhost:9080/TestConnPoolWeb/sqlserver_pool.jsp,結(jié)果:SQLSERVER_JNDI:FromTest
運(yùn)行:http://localhost:9080/TestConnPoolWeb/sybase_pool.jsp,結(jié)果:SYBASE_JNDI:FromTest
運(yùn)行:http://localhost:9080/TestConnPoolWeb/mysql_pool.jsp,結(jié)果:MYSQL_JNDI:FromTest
2.
程序說(shuō)明
得到連接的方法:
private?static?Connection?getConnection(String?strConnPoolJndi)?throws?NamingException,?SQLException?{
Context?ctx?=?null;
ctx?=?new?InitialContext();
DataSource?ds?=?(DataSource)ctx.lookup(strConnPoolJndi);
Connection?conn?=?ds.getConnection();
return?conn;
}
參數(shù)strConnPoolJndi分別為:ORACLE_JNDI、SQLSERVER_JNDI、SYBASE_JNDI、MYSQL_JNDI,對(duì)于相應(yīng)的數(shù)據(jù)庫(kù)。
從表中查詢一條數(shù)據(jù):
public?static?String?getDBData(String?strConnPoolJndi)?{
String?strReturn="";
Connection?conn?=?null;
Statement?st?=?null;
ResultSet?rs?=?null;
try?{
conn?=?getConnection(strConnPoolJndi);
st?=?conn.createStatement();
rs?=?st.executeQuery(?"select?C1?from?TEST"?);
if?(rs.next())?{
strReturn?=?rs.getString(1);
}
}
jsp中打印出表中的一條記錄:
<%
out.println("ORACLE_JNDI:"?+?test.pool.TestPool.getDBData("ORACLE_JNDI"));
%>
附件TestConnPoolWeb.ear(包括源程序)
[
Download File]