一、系統準備
1.在相應的數據庫中建立本文用到的表
insert into TEST values('FromTest')
2.準備環境變量,此部分往往會被初學者忽略。
點擊“管理WebSphere變量”,ORACLE_JDBC_DRIVER_PATH的值輸入操作系統中jar文件(classes12.jar)的位置。
“確認”後,界面最上方,點擊“保存”,會再提示“保存”還是“放棄”,再選“保存”。
爲方便起見,本文中,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.本文中的所有例子測試均通過,環境:Windows2003、WebShpere5.1、ORACLE9I、SQL Server 2000、SYBASE12.5、MySQL5.0。
二、Oracle、SQL Server、Sybase、MySQL數據庫連接池在WebSphere中的詳細配置步驟
(一)、Oracle連接池的配置
1.進入管理控制檯(http://localhost:9090/admin/)
2.選擇:資源->JDBC提供程序,點擊“新建”,建立JDBC提供程序。
點擊“應用”後,類路徑中,輸入“${ORACLE_JDBC_DRIVER_PATH}/classes12.jar”,再點擊“應用”。
3.定義數據源
點擊界面中“數據源後”再點擊“新建”,建立數據源。
JNDI取名ORACLE_JNDI,點擊“應用”。
4.界面上點擊“定製屬性”,定義連接池的JDBC Driver、URL、用戶名和口令等信息。
點擊“URL”,URL的值輸入:jdbc:oracle:thin:@localhost:1521:MYHORA,其中,localhost可以爲ORACLE的IP地址,MYHORA是ORACLE的服務名稱。
點擊“確定”保存配置。
同樣的方法輸入:
driverType的值oracle.jdbc.driver.OracleDriver
databasename的值MYHORA
servername的值localhost
preTestSQLString的值爲SELECT COUNT(1) FROM TEST
其餘的取默認值。
5.本部分比較關鍵,是初學着比較困惑的地方。
我們看到,界面上並沒有輸入用戶名、口令的地方,而沒有用戶名稱、口令是無法連接數據庫的。
在“定製屬性”中點擊“新建”,“名稱”中輸入user,“值”中輸入數據庫的用戶名稱,如:study,點擊“確定”;
在“定製屬性”中點擊“新建”,“名稱”中輸入password,“值”中輸入數據庫的口令,如:study,點擊“確定”;
我們看到,“定製屬性”中多了兩個我們自定義的屬性user、password
6.保存配置,在“定製屬性”界面的最上方點擊“保存”。
7.測試連接
系統提示:成功信息,表明,連接池配置成功。
連接池配置成功後,WebSphere需要重新啓動。
(二)、SQL server連接池的配置
SQL Server連接池的配置步驟同Oracle,具體的參數值:
JDBC 提供程序:下拉選擇Microsoft JDBC driver for MSSQLServer 2000
Sybase連接池的配置步驟也同Oracle,具體的參數值:
常規屬性中的名稱:Microsoft JDBC driver for MSSQLServer 2000
常規屬性中的描述:Microsoft JDBC driver for MSSQLServer 2000
常規屬性中的類路徑:
${ORACLE_JDBC_DRIVER_PATH}/msbase.jar
${ORACLE_JDBC_DRIVER_PATH}/mssqlserver.jar
${ORACLE_JDBC_DRIVER_PATH}/msutil.jar
常規屬性中的實現類名:默認
數據源中的名稱:SQLSERVER_JNDI
數據源中的JNDI:SQLSERVER_JNDI
定製屬性中的databaseName:數據庫名稱
定製屬性中的serverName:Sybase數據庫服務器的名稱或IP
定製屬性中的portNumber:端口號
定製屬性中的preTestSQLString:SELECT COUNT(1) FROM TEST
同Oracle,手工“新建”user和password屬性,值爲數據庫的用戶名和口令,該用戶的缺省數據庫必須爲databaseName的值。
其他默認。
(三)、Sybase連接池的配置
JDBC 提供程序:下拉選擇Sybase JDBC Driver
Sybase連接池的配置步驟也同Oracle,具體的參數值:
常規屬性中的名稱:SYBASE JDBC Driver
常規屬性中的描述:SYBASE JDBC Driver
常規屬性中的類路徑:${ORACLE_JDBC_DRIVER_PATH}/jconn2.jar
常規屬性中的實現類名:默認
數據源中的名稱:SYBASE_JNDI
數據源中的JNDI:SYBASE_JNDI
定製屬性中的databaseName:數據庫名稱
定製屬性中的serverName:Sybase數據庫服務器的名稱或IP
定製屬性中的portNumber:端口號
定製屬性中的preTestSQLString:SELECT COUNT(1) FROM TEST
同Oracle,手工“新建”user和password屬性,值爲數據庫的用戶名和口令,該用戶的缺省數據庫必須爲databaseName的值。
其他默認。
(四)、MySQL連接池的配置
MySQL連接池的配置步驟同Oracle稍有不同,JDBC 提供程序中並沒有MySQL中的選項,選Oracle JDBC Driver就可以,實際運行中,WebSphere是以設置的參數爲準的。
具體的參數值:
常規屬性中的名稱:MySQL JDBC Driver
常規屬性中的描述:MySQL JDBC Driver
常規屬性中的類路徑:${ORACLE_JDBC_DRIVER_PATH}/mysql-connector-java-3.1.10-bin.jar
常規屬性中的實現類名:com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
數據源中的名稱:MYSQL_JNDI
數據源中的JNDI:MYSQL_JNDI
由於WebSphere沒有缺省的MySQL選項,“定製屬性”全部需要手工新建。具體的值要根據MySQL的實際環境要做相應修改(petshop是我機器上的數據庫名稱)。
三、應用程序中測試連接池。
1. jsp程序中測試連接池
附件中的TestConnPoolWeb.ear文件直接發佈後,
運行:http://localhost:9080/TestConnPoolWeb/oracle_pool.jsp,結果:ORACLE_JNDI:FromTest
運行:http://localhost:9080/TestConnPoolWeb/sqlserver_pool.jsp,結果:SQLSERVER_JNDI:FromTest
運行:http://localhost:9080/TestConnPoolWeb/sybase_pool.jsp,結果:SYBASE_JNDI:FromTest
運行:http://localhost:9080/TestConnPoolWeb/mysql_pool.jsp,結果:MYSQL_JNDI:FromTest
2. 程序說明
得到連接的方法:
Context ctx = null;
ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup(strConnPoolJndi);
Connection conn = ds.getConnection();
return conn;
}
參數strConnPoolJndi分別爲:ORACLE_JNDI、SQLSERVER_JNDI、SYBASE_JNDI、MYSQL_JNDI,對於相應的數據庫。
從表中查詢一條數據:
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"));
%>