现在项目依旧连接两个数据库,两个数据库的访问都比较频繁.所以都必须用连接池.
那么我不明白的是,我现在两个库都用dbcp连接池还是说一个用dpcp,另一个用c3p0 ?两种用法会不会有什么问题?
因为之前的项目一个用了连接池,另一个用jdbc,这次的不行了.
麻烦有过经验的高手指点,感激不尽.我现在的连接池部分代码如下:
public class ConnPool {
private static DataSource source = null;
private static BasicDataSource ds = null; public Connection getConnection() {
Connection conn=null;
        if (source == null) {
            try {
                conn = TchargeConn.getDataSource().getConnection();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } 
        //System.out.println("conn:" + conn);
        return conn;
} private static DataSource getDataSource(String ctxName) {
DataSource ds = null;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
ds = (DataSource) envCtx.lookup(ctxName);
} catch (Exception e) {
e.printStackTrace();
} return ds; }

public static BasicDataSource getDataSource() {
if (ds == null) {
ds = new BasicDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://192.168.1.18:3306/data");
ds.setUsername("root");
ds.setPassword("root");
ds.setMaxActive(50);
}
return ds;
}
}

解决方案 »

  1.   

    最好统一用一个,这样开发起来也方便,代码可读性什么的也比较好,另外一个就是好维护,同时切换到另外的连接池更方便,全部替换用法即可。
    另外c3p0有些地方不兼容需要注意(特别是对oracle)。
      

  2.   

    哦感谢.
    另外我想我问一下的就是,我如果用一个连接池,那么池内连接又是两个库的,他们会不协调吗?
    还就是,在public static BasicDataSource getDataSource()方法里可以像配置文件里那样配置各项参数吧,比如:
       minIdle="10"
       maxIdle="30"
       maxWait="10000"
       removeAbandoned="true"
       removeAbandonedTimeout="180"
      

  3.   

    我现在没有任何关于连接池的配置文件,就是通过cloass来的 .
      

  4.   

    你可以在应用服务器里面配,比如weblogic、tomcat、jboss、was都可以配的。搜索下你的应用服务器+连接池配置,网上多了去啊