java Servlet使用c3p0创建多个Mysql数据库连接池,Sevlet使用c3p0创建oracle数据库连接池

来源:互联网 发布:linux gzip 打包压缩 编辑:程序博客网 时间:2024/05/22 10:35

由于之前的servlet操作数据库的时候造成了数据库连接的等待问题,所以考虑使用使用数据库连接池的使用,因为项目中涉及mysql和oracle的数据同步问题,所以也将oracle的连接次配置给出:

1、数据库连接配置:

public static final String DBDRIVER               = "com.mysql.jdbc.Driver";public static final String DBURL_A                = "jdbc:mysql://Mysql地址一:3306/数据库";  public static final String DBUSER_A               = "用户名";  public static final String DBPASSWORLD_A          = "密码";    public static final String DBURL_B                = "jdbc:mysql://Mysql地址二:3306/数据库";  public static final String DBUSER_B               = "用户名";  public static final String DBPASSWORLD_B          = "密码";  public static final String ODBDRIVER              = "oracle.jdbc.driver.OracleDriver";public static final String DBURL_C                = "jdbc:oracle:thin:@Oracle地址:3306:数据库";  public static final String DBUSER_C               = "用户名";  public static final String DBPASSWORLD_C          = "密码"; 

2、多个Mysql数据库连接池:

package mysql;import java.sql.Connection;import java.sql.SQLException;import com.mchange.v2.c3p0.ComboPooledDataSource;//引入站点的配置信息import config.Config;/** * 数据库连接生成类,返回一个数据库连接对象 * 构造函数完成c3p0的配置,根据不一样的构造生成不一样的连接池对象 *  * @author yuyu * */public class DbConnect {private static ComboPooledDataSource dataSourceJLP=null;private static ComboPooledDataSource dataSourceMDB=null;private String db;/** * 构造函数完成数据库的连接和连接对象的生成 */public DbConnect() {try{if(dataSourceJLP==null){dataSourceJLP=new ComboPooledDataSource();        //设置连接参数dataSourceJLP.setJdbcUrl(Config.DBURL_A);dataSourceJLP.setDriverClass(Config.DBDRIVER);dataSourceJLP.setUser(Config.DBUSER_A);dataSourceJLP.setPassword(Config.DBPASSWORLD_A);dataSourceJLP.setInitialPoolSize(3);dataSourceJLP.setMaxPoolSize(10);}this.db="jlp";}catch(Exception e){e.printStackTrace();}}public DbConnect(String mdb) {try{if(dataSourceMDB==null){dataSourceMDB=new ComboPooledDataSource();        //设置连接参数dataSourceMDB.setJdbcUrl(Config.DBURL_B);dataSourceMDB.setDriverClass(Config.DBDRIVER);dataSourceMDB.setUser(Config.DBUSER_B);dataSourceMDB.setPassword(Config.DBPASSWORLD_B);dataSourceMDB.setInitialPoolSize(3);dataSourceMDB.setMaxPoolSize(10);}this.db="mdb";}catch(Exception e){e.printStackTrace();}}/** * 取得已经构造生成的数据库连接 * @return 返回数据库连接对象 */public Connection getConnect(){try {if(db.equals("mdb")){return dataSourceMDB.getConnection();}else if(db.equals("jlp")){return dataSourceJLP.getConnection();}} catch (SQLException e) {e.printStackTrace();}return null;}}
3、oracle数据库连接池:

package oracle;import java.sql.Connection;import java.sql.SQLException;import com.mchange.v2.c3p0.ComboPooledDataSource;import config.Config;/** * Oracle链接数据库对象 * @author Administrator * */public class OracleConnect {private static ComboPooledDataSource dataSourceTest=null;/** * 构造函数完成数据库的连接和连接对象的生成 */public OracleConnect() {try{if(dataSourceTest==null){dataSourceTest=new ComboPooledDataSource();        //设置连接参数dataSourceTest.setJdbcUrl(Config.DBURL_C);dataSourceTest.setDriverClass(Config.ODBDRIVER);dataSourceTest.setUser(Config.DBUSER_C);dataSourceTest.setPassword(Config.DBPASSWORLD_C);dataSourceTest.setInitialPoolSize(3);dataSourceTest.setMaxPoolSize(10);}}catch(Exception e){e.printStackTrace();}}/** * 取得已经构造生成的数据库连接 * @return 返回数据库连接对象 */public Connection getConnect(){try {return dataSourceTest.getConnection();} catch (SQLException e) {e.printStackTrace();}return null;}}

4、对应的调用:

Connection conA=new DbConnect().getConnect();//获取Mysql A数据库连接对象Connection conB=new DbConnect("mdb").getConnect();//获取Mysql B数据库连接对象Connection conC=new OracleConnect().getConnect();//获取Oracle C数据库连接对象



0 0
原创粉丝点击