請教weblogic資料來源使用問題

layout1發表於2003-09-04
新手發言,不到之處請多多指點。

使用weblogic自帶的oracle驅動連結oracle8i伺服器。配置資料連結池
和資料來源以後,如何正確使用連線池,以達到效能上的最佳化?
我使用如下的類去獲取資料來源並且獲取連結:
結果發現每次去呼叫的時候都顯得速度非常慢
我測試後發現每次都去lookup了一下資料來源
這個非常浪費時間,不知道有什麼辦法可以不用每次去獲取
資料來源來獲取連結?
此外,如何把獲取的連結歸還給資料連線池?

如果我直接對Statement和Connection進行Close()操作的話
連結是被關閉了還是返回給連線池了?
請指點迷津。不勝感激。
(weblogic8.1 oracle8i jdk1.4.1 ie6.0 )
//////////////原始碼附下///////////////////////////
package com.test.lancer.util;

import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import java.util.Vector;
import java.util.Properties;


public class DBConnectBean{
private static Context ctx = null; //上下文
private static DataSource ds = null; //資料來源

private DBConnectBean()
{
}

public static Connection getConnection() throws Exception {

if (ds == null) {
initDataSource();
}
return ds.getConnection();
}

//初始化資料來源,用於獲取連結
private static void initDataSource() throws Exception {
try {
if (ctx == null) {
initContext();
}
ds = (DataSource) ctx.lookup("lancer_pool");
}
catch (NamingException ex) {
log("there is something wrong when get datasource");
throw new Exception(ex.getMessage());
}
}

//初始化上下文,用於查詢資料來源
private static void initContext() throws Exception

{
String url = "t3://localhost:7001";
String user = null;
String password = null;
Properties properties = null;
try {
properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, url);
if (user != null) {
properties.put(Context.SECURITY_PRINCIPAL, user);
properties.put(Context.SECURITY_CREDENTIALS,
password == null ? "" : password);
}

ctx = new InitialContext(properties);
}
catch (Exception e) {
log("Unable to connect to WebLogic server at " + url);
log("Please make sure that the server is running.");
throw e;
}

}

//記錄出錯資訊,可改寫進入日誌檔案
private static void log(String str) {
System.out.println(str);
}
}

相關文章