在javabean中使用连接池 ,配置tomcat怎么实现啊 ??高手讲一讲吧    :)

解决方案 »

  1.   

    tomcat中配置连接池 <Resource name="jdbc/BD" auth="Container" type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/DB">
     <parameter>
      <name>maxActive</name>
      <!-- Maximum number of DB connections in pool.Set to 0 for no limit. -->
      <value>100</value>
     </parameter>
     <parameter>
      <name>maxIdle</name>
      <!-- Maximum number of idle DB connections to retain in pool.Set to 0 for no limit. -->
      <value>30</value>
     </parameter>
     <parameter>
      <name>maxWait</name>
      <!-- Maximum time to wait for a DB connection to become available in ms.An exception is thrown if this timeout is exceeded.Set to -1 to wait indefinitely. -->
      <value>10000</value>
     </parameter>
     <parameter>
      <name>removeAbandoned</name>
      <!-- Abandoned DB connections are removed and recycled -->
      <value>true</value>
     </parameter>
     <parameter>
      <name>removeAbandonedTimeout</name>
      <!-- Use the removeAbandonedTimeout parameter to set the number of seconds a DB connection has been idle before it is considered abandoned.  -->
      <value>60</value>
     </parameter>
     <parameter>
      <name>logAbandoned</name>
      <!-- Log a stack trace of the code which abandoned -->
      <value>false</value>
     </parameter>
     <parameter>
      <name>factory</name>
      <!--DBCP Basic Datasource Factory -->
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
     </parameter>
     <parameter>
      <name>username</name>
      <!-- Database User Name -->
      <value>sa</value>
     </parameter>
     <parameter>
      <name>password</name>
      <!-- User Password -->
      <value>anl123</value>
     </parameter>
     <parameter>
      <name>driverClassName</name>
      <!-- Database Driver Class Name -->
      <value>net.sourceforge.jtds.jdbc.Driver</value>  
     </parameter>
     <parameter>
      <name>url</name>
      <!-- Database Address -->
      <value>jdbc:jtds:sqlserver://192.168.168.168:1433/BD</value>
     </parameter>
    </ResourceParams>
      

  2.   

    JAVABEAN里调用    try{
          conn=SystemParameter.getDataSourceU().getConnection();
          stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    //    设置锁超时
          stmt.executeUpdate("SET DEADLOCK_PRIORITY LOW \n SET LOCK_TIMEOUT 10000");
        }catch(SQLException e){
          throw new Exception("创建数据库连接对象异常");
        }
      

  3.   

    to bxh2dai(希望明天会有些改变) 
    配置文件放在哪个文件?
      

  4.   

    tomcat的安装目录下面有一个conf的文件夹,里面有一个server.xml
      

  5.   

    代码实现
    -----------------------------------------------------------------package com.fei.db;
    import java.util.*;
    public class DBConnPool{
    //数据库标识
    private String dbid = "sql";
    //实际使用中的连接数
    private int inUse = 0;
    //最大连接数
    private int maxConn = 0;
    //空闲连接
    private Vector freeConn = new Vector();


    public DBConnPool(int maxConn){
    this.maxConn = maxConn;
    }
    public DBConnPool(int maxConn,String dbid){
    this.maxConn = maxConn;
    this.dbid = dbid;
    }
    /*将连接返回连接池*/
    public synchronized void releaseConnection(JConnect conn){
    //将连接加入向量尾
    freeConn.addElement(conn);
    if(inUse>1){
    inUse--;
    }
    System.out.println("releasing Connection");
    }
    /*从连接池中取出连接*/
    public synchronized JConnect getConnection(){
    JConnect conn = null;
    if(freeConn.size()>0){
    //获取列表中的第一个连接
    conn = (JConnect)freeConn.firstElement();
    freeConn.removeElementAt(0);
    if(conn.isClosed()){
    //递归自己
    conn = this.getConnection();
    }
    }else if(maxConn==0 || inUse<maxConn){//实际使用的连接小于最大连接数
    conn = newConnection();
    if(conn!=null){
    inUse ++;
    }
    }
    System.out.println("Geting Connection Number is: "+inUse);
    return conn;
    }
    //新创建连接
    private JConnect newConnection(){
    JConnect conn = JFactory.getJCon(this.dbid);
    conn.connect();
    System.out.println("Created the Connection");
    return conn;
    }
    /*关闭所有连接*/
    public synchronized void closeConn(){
    Enumeration ration = freeConn.elements();
    while(ration.hasMoreElements()){
    JConnect conn = (JConnect)ration.nextElement();
    conn.close();
    }
    freeConn.removeAllElements();
    }
    //测试
    public static void main(String args[]){
    DBConnPool db = new DBConnPool(10);
    for(int i=0;i<10;i++){
    JConnect conn = db.getConnection();
    //System.out.println("It is here : "+conn);
    SQL runSQL = conn.getSQL();
    JResult result = runSQL.select("select * from users");
    int rows = result.getRows();
    for(int j=0;j<rows;j++){
    System.out.print(result.get(j,0)+"   ");
    System.out.print(result.get(j,1)+"   ");
    System.out.print(result.get(j,2));
    System.out.println();
    }
    db.releaseConnection(conn);
    }
    System.out.println("-----------------------------------");
    /*for(int i=0;i<10;i++){
    JConnect conn = db.getConnection();
    System.out.println("It is here : "+conn);
    }*/

    }
    }