普通得连接池就可以啊,不一定非要配jrun的,给你一个我们以前项目用的例子,在jrun下跑的很好的。---DBConnPool.java---
package db;import java.sql.*;
import java.util.*;/*连接池类.能够根据要求创建新连接,直到最大连接数为止.*/
public class DBConnPool {
//实际使用中的连接数
private int inUse=0;
//空闲连接
private Vector connections = new Vector();
//连接池名
private String poolname;
//数据库标识
private String dbid;
//驱动程序名
private String drivername;
//数据库账号
private String username;
//数据库密码
private String passwd;
//最大连接数
private int maxconn; public DBConnPool(String poolname, String drivername, String dbid, String username, String passwd, int maxconn) {
this.poolname = poolname;
this.dbid = dbid;
this.drivername = drivername;
this.username = username;
this.passwd = passwd;
this.maxconn = maxconn;
} /*将连接返回给连接池*/
public synchronized void releaseConnection(Connection con) {
// 将指定连接加入到向量末尾
connections.addElement(con);
//连接数减一
inUse--;
} /*从连接池得到一个连接*/
public synchronized Connection getConnection() {
Connection con = null;
if (connections.size() > 0) {
// 获取连接列表中获得第一个连接
con = (Connection) connections.elementAt(0);
connections.removeElementAt(0);
//如果此连接已关闭,则继续获取
         try {
            if (con.isClosed())
               con = getConnection();
         }
         catch (Exception ex) {
            ex.printStackTrace();
         }
}
//如果实际使用的连接小于最大连接数,就新创建一个连接
else if (maxconn == 0 || inUse < maxconn) {
con = newConnection();
}
if (con != null) {
//连接数增一
inUse++;
}
//返回一个连接
return con;
} /*创建新的连接*/
private Connection newConnection() {
Connection con = null;
try {
//加载驱动程序
Class.forName(drivername);
//建立连接
con = DriverManager.getConnection(dbid, username, passwd);
}
catch (Exception e) {
e.printStackTrace();
return null;
}
//返回该连接
return con;
} /*关闭所有连接*/
public synchronized void closeConn() {
Enumeration allConnections = connections.elements();
while (allConnections.hasMoreElements()) {
Connection con = (Connection) allConnections.nextElement();
try {
con.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
connections.removeAllElements();
}
}

解决方案 »

  1.   

    ---DBConnManager.java---jsp里调这个主文件,如果不用瘦用户连接,只要在jrun里配好连接池,替换其中连接库部分语句就可以。package db;import java.sql.*;
    import java.util.*;/*连接池管理类,可以管理多个数据库连接池*/
    public class DBConnManager {
    //连接池名列表
    private Vector poolnames = new Vector();
    //驱动程序名列表
    private Vector drivernames = new Vector();
    //数据库标识列表
    private Vector dbids = new Vector();
    //用户名列表
    private Vector usernames = new Vector();
    //密码列表
    private Vector passwds = new Vector();
    //最大连接数列表
    private Vector maxconns = new Vector();
    //连接池队列
    private Hashtable connPools = new Hashtable();

    public DBConnManager() {
    //添加scjp数据库的连接信息
    poolnames.addElement("scjp");
    drivernames.addElement("oracle.jdbc.driver.OracleDriver");
    dbids.addElement("jdbc:oracle:thin:@192.168.168.13:1521:scjp");
    usernames.addElement("scjp");
    passwds.addElement("scjp");
    maxconns.addElement("15");

    //添加test数据库的连接信息
    poolnames.addElement("test");
    drivernames.addElement("oracle.jdbc.driver.OracleDriver");
    dbids.addElement("jdbc:oracle:thin:@192.168.168.13:1521:test");
    usernames.addElement("test");
    passwds.addElement("test");
    maxconns.addElement("15");


    //创建连接池
    createPools();
    }

    /*将连接返回给由指定的连接池*/
    public void releaseConnection(String name, Connection con) {
    DBConnPool pool = (DBConnPool) connPools.get(name);
    if (pool != null)
    pool.releaseConnection(con);
    }

    /*得到一个指定连接池中的连接*/
    public Connection getConnection(String name) {
    DBConnPool pool = (DBConnPool) connPools.get(name);
    if (pool != null)
    return pool.getConnection();
    return null;
    }

    /*关闭所有连接*/
    public synchronized void closeConns() {
    Enumeration allPools = connPools.elements();
    while (allPools.hasMoreElements()) {
    DBConnPool pool = (DBConnPool) allPools.nextElement();
    pool.closeConn();
    }
    }

    /*创建连接池*/
    private void createPools() {
    for(int i = 0; i<poolnames.size();i++){
    String poolname = poolnames.elementAt(i).toString();
    String drivername = drivernames.elementAt(i).toString();
    String dbid = dbids.elementAt(i).toString();
    String username = usernames.elementAt(i).toString();
    String passwd = passwds.elementAt(i).toString();
    int maxconn=0;
    try {
    maxconn = Integer.parseInt(maxconns.elementAt(i).toString());
    }
    catch (NumberFormatException e) {
    e.printStackTrace();
    }
    DBConnPool pool = new DBConnPool(poolname, drivername, dbid, username, passwd, maxconn);
    connPools.put(poolname, pool);
    }
    }
    }
      

  2.   

    上楼的谢谢,分都给你了,你把QQ告诉我,我向你请教一下,msn也行!
      

  3.   

    我想你应该用的是oracle吧,在admin控制台打开项目的Resources/JDBC data source可以配置数据库连接方式,所以会有thin driver,你可以参看一下他的其他连接方式,submit后会给你连接语句,考在上面程序里就行。
    不过因为我现在用websphere+db2,手头没有这个环境,很具体的就无法解答你了。
    详细oracle连接方式,我想你去数据库/oracle版问一下会比较好,那边很多高手的。
      

  4.   

    junqiang(上帝,宽恕我吧),你是进来骂我的还是回答我的问题,怎么现在还有你这种垃圾!我调了一上午,对你的程序还是有点晕,看不太懂,不知从哪下手!还请指教,我的msn是[email protected]
      

  5.   

    忘了给你jsp的例子,在jsp页面里调用这个bean
    <jsp:useBean id="connManager" scope="session" class="db.DBConnManager" />
    <%
    Connection con = connManager.getConnection("scjp");
    if(con==null)
    {
    %>对不起,现在数据库忙,请稍后再试<%
    }
    Statement stmt = con.createStatement();
    %>scjp是你设定的连接库的名字
    //添加scjp数据库的连接信息
    poolnames.addElement("scjp");
    drivernames.addElement("oracle.jdbc.driver.OracleDriver");
    dbids.addElement("jdbc:oracle:thin:@192.168.168.13:1521:scjp");
    usernames.addElement("scjp");
    passwds.addElement("scjp");
    maxconns.addElement("15");
    就是这个第一行的名字。关闭数据库连接用
    <%
    stmt.close();
    connManager.releaseConnection("scjp",con);
    %>呵呵,7楼的用不着骂人,做项目遇到问题谁都急的。
      

  6.   

    to  kaibinsj(天翔) :
    我想他是跪习惯了,你帮他做好了,
    那就就在一旁看他**了。做人要有骨气!!
      

  7.   

    在你的基础上我改了一下,连不上,帮我看看哪里错了,kaibinsj(天翔) 
    package apps;import java.sql.*;
    import java.util.*;
    import java.lang.*;/*连接池管理类,可以管理多个数据库连接池*/
    public class DBConnManager {
    //连接池名列表
    protected String poolnames;
    private Hashtable connPools = new Hashtable(); public DBConnManager() {
    //添加scjp数据库的连接信息
    poolnames="online";

    //创建连接池
    createPools();
    }

    /*将连接返回给由指定的连接池*/
    public void releaseConnection(String name,Connection con) {
    DBConnManager pool = (DBConnManager) connPools.get(name);
    if (pool != null)
    pool.releaseConnection(name,con);
    }

    /*得到一个指定连接池中的连接*/
    public Connection getConnection(String name) {
    DBConnManager pool = (DBConnManager) connPools.get(name);
    return pool.getConnection(name);

    }

    /*关闭所有连接*/
    public synchronized void closeConns() {
    Enumeration allPools = connPools.elements();
    while (allPools.hasMoreElements()) {
    DBConnManager pool = (DBConnManager) allPools.nextElement();
    pool.closeConns();
    }
    }

    /*创建连接池*/
    private void createPools() {
    DBConnManager pool = new DBConnManager();
    connPools.put(poolnames, pool);
    }
    }
      

  8.   

    这个应该可以用的,jrun4下测试ok,datasource自个在jrun控制台配置一下,一般是8000端口,用jrun最好先看一下其安装目录下的docs下的文档,很好的说,嗬……^_^public static Connection getConn(String jdbcName, int intCnt)
    {
    Connection dbConnection = null;
    try
    {
    InitialContext ctx = new InitialContext();
    DataSource ds = (DataSource) ctx.lookup(jdbcName);
    dbConnection = ds.getConnection();
    }
    catch(Exception e)
    { }

    try
    {
                if (dbConnection.isClosed() && intCnt < 3)
                {
                    intCnt++;
                    dbConnection = getConn(jdbcName, intCnt);            }
            }
            catch (SQLException e)
            {
                intCnt++;
                dbConnection = getConn(jdbcName, intCnt);
            }
            
    return dbConnection;
    }

    public static Connection getConn(String jdbcName) throws Exception
    {
    return getConn(jdbcName, 0);
    }public static void clear()
        {
         try
         {
         if (conn != null) { conn.close();}
         }
         catch (SQLException e)
         {        }
        }
      

  9.   

    还要DBConnPool.java这个文件支持啊。