为什么不用tomcat自带的dbcp呢?
我一直在用,蛮好的啊!

解决方案 »

  1.   

    web服务器是什么,如果是WEBLOGIC还行,顺便提一个问题,关于LinkedList的;
     代码如下:
       package exe;import java.util.*;
    import java.io.*;public class test{
     
     public static void main(String[] args){
     
      String[] s={"asdf","hello","a"};
      String[] b={"this","is","a","dog"};
      LinkedList ll=new LinkedList();
        ll.add(s);
     
        ll.add(b);
        
      ll.toArray(String[] ss);
       
       for(int j=0;j<ss.length;j++){
         System.out.print(ss[j]);
        }
     }
    }
    我如何把现在的LinkedList转换成String[]啊???
      

  2.   

    dbcp推荐。可以在tomcat中配。也可以拉出来用。
      

  3.   

    J2EE应用中与Oracle数据库的连接
    作者:洪建
    在J2EE应用程序开发中,应用程序与数据库连接的建立是我们经常遇到的问题之一。在这里我主要谈谈在本地应用程序中通过OCI方式、thin方式和JdbcOdbc桥方式连接Oracle数据库,在iPlanet Application Server 6.5和Sun ONE Application Server 7中对Oracle数据库连接池的配置以及应用中如何从连接池中获得连接。
    一、本地通过JDBC获得Oracle数据库连接
    通过JDBC获得Oracle数据库连接,有三种方式:OCI方式、thin方式和JdbcOdbc桥方式。OCI方式依赖于本地的动态链接库,如果在本地安装了Oracle数据库客户端可以采用该方式;而thin方式为纯java的数据库连接方式;JdbcOdbc桥方式依赖于本地ODBC数据库源的配置,这种方式一般不太被采用。
    1、OCI方式
    先在本地安装Oracle客户端,安装完之后,在安装的路径中可以找到…/jdbc/lib/classes12.zip文件,我们在环境变量classpath中设置classes12.zip所在的路径。
    然后通过以下的数据库连接类,在本地通过OCI方式获得Oracle数据库连接。
    /**
    * 在本地获得数据库连接
    */package com.j2ee.db;import java.util.*;
    import java.sql.*;
    import javax.sql.*;
    import java.io.*;
    import oracle.jdbc.driver.*; 
    import javax.naming.*;    /**
    * 通过OCI方式获得Oracle数据库连接
    */
    public class DbConnection 
    {
      final static String sDBDriver = "oracle.jdbc.driver.OracleDriver";
      final static String sConnStr = "jdbc:oracle:oci8:sr/sr@ora199";
      
      /**
      * 
      */
      public DbConnection() 
      {
      }
      
      /**
      * 获得Oracle数据库连接 
      */
      public java.sql.Connection connectDbByOci() 
      {  
      java.sql.Connection conn=null;  
      try
      {
      Class.forName(sDBDriver);
      conn = DriverManager.getConnection(sConnStr);
      }
      catch (Exception e) 
      {
          System.out.println("ERROR:"+e.getMessage()); 
      } 
      return conn;
      }
    }
    在连接字符串 "jdbc:oracle:oci8:sr/sr@ora199" 中,"sr/sr"为Oracle用户的用户名和口令,"ora199"为数据库服务名。
    2、thin方式
    先到Oracle技术网(http://otn.oracle.com/global/cn/software/tech/java/sqlj_jdbc/index.html)下载Oracle JDBC Drivers,同样地将下载后的zip文件的路径设置在环境变量classpath。
    然后通过以下的数据库连接类,在本地通过thin方式获得Oracle数据库连接。
    /**
    * 在本地获得数据库连接
    */package com.j2ee.db;import java.util.*;
    import java.sql.*;
    import javax.sql.*;
    import java.io.*;
    import oracle.jdbc.driver.*; 
    import javax.naming.*;    /**
    * 通过thin方式获得Oracle数据库连接
    */
    public class DbConnection 
    {
    private String sConnStr = "";
      
    /**
    * 缺省构造器
    */
    public DbConnection() 
    {
    sConnStr = "jdbc:oracle:thin:@10.1.4.199:1521:ora199";
    }

    /**
    * @param ip,serviceName
    */
    public DbConnection(String ip,String serviceName) 
    {
    sConnStr = "jdbc:oracle:thin:@"+ip+":1521:"+serviceName;
    }
      
    /**
    * 通过thin方式获得Oracle数据库的连接.
    */
    public java.sql.Connection connectDbByThin() 
    {   
    java.sql.Connection conn=null; 
    try
    {
    Class.forName(sDBDriver);
    conn = DriverManager.getConnection(sConnStr,"sr","sr");
    }
    catch (Exception e) 
    {
    System.out.println("ERROR:"+e.getMessage()); 

    return conn;
    } /**
    * 通过thin方式获得Oracle数据库的连接.
    * @param userId,password
    */
    public java.sql.Connection connectByJdbc(String userId,String password) 
    {   
    java.sql.Connection conn=null; 
    try
    {
    Class.forName(sDBDriver);
    conn = DriverManager.getConnection(sConnStr,userId,password);
    }
    catch (Exception e) 
    {
    System.out.println("ERROR:"+e.getMessage()); 

    return conn;
    }
    }
    这种方式运用起来比较灵活,简单,具有较强的移植性和适用性。只要注意连接字符串"jdbc:oracle:thin:@10.1.4.199:1521:ora199"中具体参数的设置即可。
    3、JdbcOdbc桥方式
    先通过管理工具中的数据源来添加本地对Oracle数据库的连接,然后通过以下的数据库连接类,在本地通过JdbcOdbc桥方式获得Oracle数据库连接。
    /**
    * 在本地获得数据库连接
    */package com.j2ee.db;import java.util.*;
    import java.sql.*;
    import javax.sql.*;
    import java.io.*;
    import oracle.jdbc.driver.*; 
    import javax.naming.*;    /**
    * 通过JdbcOdbc桥方式获得Oracle数据库连接
    */
    public class DbConnection 

      /**
      * 
      */
      public DbConnection() 
      {
      }
      
      /**
      * 获得Oracle数据库连接 
      */
      public java.sql.Connection connectDbByJdbcOdbcBridge() 
      {  
      java.sql.Connection conn=null;  
      try
      {
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      con=DriverManager.getConnection("jdbc:odbc:ora199","sr","sr");
      }
      catch (Exception e) 
      {
          System.out.println("ERROR:"+e.getMessage()); 
      } 
      return conn;
      }
    }
    在getConnection方法中第一个参数"jdbc:odbc:ora199" 中的"ora199"为本地ODBC数据源的数据源名称,第二个参数和第三个参数分别为Oracle的用户名和口令。
    二、通过连接池获得Oracle数据库连接
    这部分主要讲述在iPlanet Application Server 6.5和Sun ONE Application Server 7中Oracle数据库连接池的配置,以及在应用中如何通过连接池获得数据库的连接。
    1、iPlanet Application Server 6.5连接池的配置
    先打开iPlanet Application Server 6.5的管理控制台,选中"database"面板,再选择"External JDBC Drivers"选项后,点击"Add…"按钮,在弹出的对话框中,添加一个名为"ora-type4"的JDBC Driver。
     
    Driver Classpath:该参数填写classes12.zip文件的物理路径。
    然后在"External JDBC DataSources"中选择"Add…",在弹出的对话框中添加一个JNDI名称为"credit2"的数据源。
     
    DriverType:选择刚添加好的"ora-type4";
    Datasource:ora199,为Oracle数据库服务名;
    Connection Pool Parameters:图中显示的是缺省设置,可以根据自己环境情况来更改这些设置。
    保存完设置后,在"DataSource Selection Box"中,选择刚添加的"credit2"数据源,再选择"Vendor Specific Properties"按钮。在对话中添加一个URL属性。
     
    至此,iPlanet Application Server 6.5中的数据库连接池配置完毕,重起服务使之生效。
    2、Sun ONE Application Server 7连接池的配置
    在配置之前将classes12.zip文件置于…/server1/lib目录下。通过浏览器的4848端口打开Sun ONE Application Server 7的管理界面,选择"server1"->"JDBC"-> "Connection Pools"下的"New…"
     
    添加一个名称为"MyConnectionPool"的Oracle数据库连接池。"Next"下一步。
     
    在"General"中填写"Datasource Classname"。
     
    在"Properties"中将不需要的属性删除,同时添加"URL"属性。
    "dataSourceName"中填写Oracle数据库服务名。
    以下连接池的缺省设置,可以根据自己环境的情况作相应的调整。
     
    选择"Finish"完成连接池的设置。
    下一步为"MyConnectionPool"连接池创建一个JNDI,以便应用程序能够通过该名称获得连接池中的连接。 "server1"->"JDBC"-> "JDBC Resources"下的"New…"
     
    至此,Sun ONE Application Server7中的数据库连接池配置完毕,重起服务使之生效。
    3、通过连接池获得连接
    以上在iPlanet Application Server 6.5和Sun ONE Application Server7中配置的连接池都可以通过以下的数据库连接类,从连接池中获得Oracle数据库连接。
    /**
    * 从连接池中获得数据库连接
    */package com.j2ee.db;import java.util.*;
    import java.sql.*;
    import javax.sql.*;
    import java.io.*;
    import oracle.jdbc.driver.*; 
    import javax.naming.*;    /**
    * 通过连接池方式获得Oracle数据库连接
    */
    public class DbConnection 

      /**
      * 
      */
      public DbConnection() 
      {
      }
      
      /**
      * 获得Oracle数据库连接 
      */
      public java.sql.Connection connectDbByConnectionPool() 
      {  
      java.sql.Connection conn=null;  
      try
      {
          Context ctx = new InitialContext();
              DataSource ds = (DataSource)ctx.lookup("jdbc/credit2");
          conn=ds.getConnection();
      }
      catch (Exception e) 
      {
          System.out.println("ERROR:"+e.getMessage()); 
      } 
      return conn;
      }
    }
    4、使用连接池的优点
    使用连接池的优点主要体现在两个方面:
    1. 对数据库的连接统一进行配置、管理、监控,以及对数据库连接池的参数进行优化调整,同时对应用中没有关闭或其他原因造成没有关闭的数据库连接由连接池统一进行管理。 
    2. 便于应用的移植和后端数据库的切换,因为在应用中通过统一的JNDI获得数据库的连接,而具体连接的是哪一台机器上的数据库与应用无关。 
      

  4.   

    我问的是tomcat下高效的连接池程序??????????????????????!!!!!!!!!!!!!!!!!!!!!!!
      

  5.   

    javabean  !!!会用吗?
      

  6.   

    tomcat下高效的连接池程竟然都没人知道!
      高手哪里去了???????????????????????
      高手帮忙!!!!!!!!!!!!!!!!!!!!!!!!!!
      

  7.   

    关于LinkedList的操作
    package testpro;import java.util.LinkedList;
    import java.util.Iterator;public class LinkedListPro {
      public static void main(String[] args) {
        LinkedList ll = new LinkedList();
        ll.add("a");
        ll.add("b");
        Iterator it = ll.iterator();
        String[] a = new String[2];
        for(int i = 0; it.hasNext();i++){
          a[i] = (String)it.next();
          System.out.println(a[i]);
        }  }
    }
      

  8.   

    不需要在程序中写数据源和连接池,只需要编辑[Tomcat5.0的安装目录]\conf\server.xml 文件,将下列代码插入到<host>……</host>标签之间:
    <Context path="/zfcx" docBase="zfcx"  debug="5" reloadable="true" crossContext="true">
    <Resource name="jdbc/myoracle" auth="Container"  type="javax.sql.DataSource"/> 
    <ResourceParams name="jdbc/myoracle">
      <parameter>
        <name>factory</name>
        <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
      </parameter>
      <parameter>
        <name>driverClassName</name>
        <value>oracle.jdbc.driver.OracleDriver</value>
      </parameter>
      <parameter>
        <name>url</name>
        <value>jdbc:oracle:thin:@192.168.0.11:1521:orc1</value>
      </parameter>
      <parameter>
        <name>username</name>
        <value>scott</value>
      </parameter>
      <parameter>
        <name>password</name>
        <value>tiger</value>
      </parameter>
      <parameter>
        <name>maxActive</name>
        <value>55</value>
      </parameter>
      <parameter>
        <name>maxIdle</name>
        <value>20</value>
      </parameter>
      <parameter>
        <name>maxWait</name>
        <value>-1</value>
      </parameter>
    <parameter>
      <name>removeAbandoned</name>
      <value>true</value>
    </parameter>
    <parameter>
      <name>logAbandoned</name>
      <value>true</value>
    </parameter>
    <parameter>
        <name>removeAbandonedTimeout</name>
        <value>200</value>
    </parameter>
    </ResourceParams>
    </Context>
    (其中参数url 包含了数据库服务器的IP地址、端口号以及该数据库例程的SID。若要深入了解,看一下Tomcat的Documentaion中有关JDBC Datasource的) 
    在程序中使用连接池时用以下程序:
      try
      {
        Context initContext = new InitialContext();
        Context envContext  = (Context)initContext.lookup("java:comp/env");
        DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle"); 
        Connection conn= ds.getConnection();
        Statement stmt = conn.createStatement();
      }
      catch(SQLException ex)
      {
        System.err.println(ex);
      }
      catch(NamingException ex)
      {
        System.err.println(ex);
      }
      

  9.   


    #Database.properties
    Driver=oracle.jdbc.driver.OracleDriver
    DbURL=jdbc:oracle:thin:@localhost:1521:dbdream
    Protocol=tcp
    Login=webmaster
    Password=webmaster#ConnectManagerBean.java
    package dreamforum;import java.sql.*;
    import javax.servlet.http.*;
    import java.util.*;public class ConnectManagerBean
        implements HttpSessionBindingListener {
      private String driver;
      private String dbURL;
      private String login;
      private String password;
      private Connection cn;
      public ConnectManagerBean() {
        try {
          ResourceBundle rbInfo = ResourceBundle.getBundle("Database");
          driver = rbInfo.getString("Driver");
          dbURL = rbInfo.getString("DbURL");
          login = rbInfo.getString("Login");
          password = rbInfo.getString("Password");
        }
        catch (Exception e) {
          e.printStackTrace();
        }
      }  public Connection getConnection() {
        try {
          Class.forName(driver);
          cn = DriverManager.getConnection(dbURL, login, password);
        }
        catch (SQLException ex) {
          System.out.println("driver not loaded");
          cn = null;
        }
        catch (ClassNotFoundException ex) {
          System.out.println("driver unavailable");
          cn = null;
        }
        return cn;
      }  public void setAutoCommit(boolean autoCommit) throws SQLException {
        cn.setAutoCommit(autoCommit);
      }  public void commit() throws SQLException {
        cn.commit();
      }  public void rollback() throws SQLException {
        cn.rollback();
      }  public void close() {
        try {
          if (cn != null || cn.isClosed()) {
            cn.close();
          }
        }
        catch (SQLException ex) {
          ex.printStackTrace();
        }
      }  public void valueBound(HttpSessionBindingEvent event) {
        System.err.println("ConnectBean: in the valueBound method");
      }  public void valueUnbound(HttpSessionBindingEvent event) {
        System.err.println("ConnectBean: in the valueBound method");
      }}################################################################
    #################################################################
    <%
      Connection cn = connectBeanId.getConnection();
      PreparedStatement stm = cn.prepareStatement("select branch_id,name,describe from branch order by branch_id");
      ResultSet rs = stm.executeQuery();
      while (rs.next() )
      {
    %>
    <table width="780" border="1" align="center" bordercolor="#FF00FF" bgcolor="#FFFFCC">
      <tr bgcolor="#84A5CE">
        <td width="40%" bgcolor="#84A5CE"><%=rs.getString("name")%></td>
        <th colspan="4"><%=rs.getString("describe")%></th>
      </tr>
    <%
      Connection cn2 = connectBeanId.getConnection();
      PreparedStatement stm2 = cn2.prepareStatement("select sub_name,sub_describe,mnt,artmnt,updatedate,updateby from subbranch where branch_id=? order by branch_id");
      stm2.setInt(1,rs.getInt("branch_id"));
      ResultSet rs2 = stm2.executeQuery();
      while (rs2.next())
      {
    %>
      <tr>
        <td width="15%"><%=rs2.getString("sub_name")%><br>
            <%=rs2.getString("sub_describe")%>
        </td>
        <td width="15%"><%=rs2.getInt("mnt")%></td>
        <td width="15%"><%=rs2.getInt("artmnt")%></td>
        <td width="15%"><%=rs2.getDate("updatedate")%></td>
        <td width="15%"><%=rs2.getString("updateby")%></td>
      </tr>
    <%
      }
      cn2.close();
    %>
    </table>
    <%
      }
    cn.close();
    %>
      

  10.   

    发到我的信箱中,我的信箱是:[email protected]  [email protected]
       先谢谢了!!!!!!!!!!!!!
      

  11.   

    能不能也发一份给我
    [email protected]
      

  12.   

    Java 的JDBC 数据库连接池实现方法
    http://www.csdn.net/Develop/read_article.asp?id=21140
      

  13.   

    按照吾上述的利用dbcp的方法就行了,手工编写是自讨苦吃。
    参看tomcat documentation 中的jdbc datasource 一章
      

  14.   

    Oracle有自己的Connection Pool,很好用。就是文档少了点。建议楼主还是用它的原配比较好。