Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 同一服务器上多个MySQL数据库的JDBC连接池(使用相同的用户和密码)_Java_Mysql_Jdbc_C3p0_Pool - Fatal编程技术网

Java 同一服务器上多个MySQL数据库的JDBC连接池(使用相同的用户和密码)

Java 同一服务器上多个MySQL数据库的JDBC连接池(使用相同的用户和密码),java,mysql,jdbc,c3p0,pool,Java,Mysql,Jdbc,C3p0,Pool,我有多个网站(大约200个)由同一个Java web应用程序托管。每个站点都有自己的MySQL数据库。这些数据库都位于同一个MySQL服务器上,并且都使用相同的用户名和密码进行访问 由于我实现池的方式,我目前的数据库连接已经用完。我正在为每个站点的数据库使用C3P0 ComboPooledDataSource。这会创建数百个到数据库服务器的连接,而数据库服务器似乎无法处理它 是否有一种池机制来创建一个数据库连接池,该连接池可用于单个数据库服务器上托管的所有数据库?我发现我可以为第一个数据库创建C

我有多个网站(大约200个)由同一个Java web应用程序托管。每个站点都有自己的MySQL数据库。这些数据库都位于同一个MySQL服务器上,并且都使用相同的用户名和密码进行访问

由于我实现池的方式,我目前的数据库连接已经用完。我正在为每个站点的数据库使用C3P0 ComboPooledDataSource。这会创建数百个到数据库服务器的连接,而数据库服务器似乎无法处理它


是否有一种池机制来创建一个数据库连接池,该连接池可用于单个数据库服务器上托管的所有数据库?

我发现我可以为第一个数据库创建ComboPooledDataSource。然后,当我从数据库池获得连接时,我可以调用连接上的
setCatalog(name)
,使用同一服务器上使用数据池的任何其他数据库

ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass("com.mysql.jdbc.Driver");
cpds.setJdbcUrl("jdbc:mysql://localhost:3306/site_a");
cpds.setUser(user);
cpds.setPassword(pass);
....
Connection conn = getPool().getConnection();
conn.setCatalog("site_b");
...
编辑:自从写了这篇文章后,我转到了。同样的
setCatalog
技术也适用于它,但用于创建连接的语法不同:

try {
    Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
} catch (ClassNotFoundException e) {
    throw new RuntimeException(e);
}
Properties info = new Properties();
info.setProperty("proxool.maximum-connection-count", "20");
info.setProperty("proxool.house-keeping-test-sql", " select CURDATE()");
info.setProperty("user", user);
info.setProperty("password", pass);
info.setProperty("proxool.alias", "mypoolname");
info.setProperty("proxool.url", "jdbc:mysql://localhost:3306/site_a");
info.setProperty("proxool.driver", "com.mysql.jdbc.Driver");
String url = "proxool.mypoolname";
ProxoolDatabasePool pool = new ProxoolDatabasePool(url, info);
....
Connection conn = pool.getConnection();
conn.setCatalog("site_b");
...

我发现我可以为第一个数据库创建ComboPooledDataSource。然后,当我从数据库池获得连接时,我可以调用连接上的
setCatalog(name)
,使用同一服务器上使用数据池的任何其他数据库

ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass("com.mysql.jdbc.Driver");
cpds.setJdbcUrl("jdbc:mysql://localhost:3306/site_a");
cpds.setUser(user);
cpds.setPassword(pass);
....
Connection conn = getPool().getConnection();
conn.setCatalog("site_b");
...
编辑:自从写了这篇文章后,我转到了。同样的
setCatalog
技术也适用于它,但用于创建连接的语法不同:

try {
    Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
} catch (ClassNotFoundException e) {
    throw new RuntimeException(e);
}
Properties info = new Properties();
info.setProperty("proxool.maximum-connection-count", "20");
info.setProperty("proxool.house-keeping-test-sql", " select CURDATE()");
info.setProperty("user", user);
info.setProperty("password", pass);
info.setProperty("proxool.alias", "mypoolname");
info.setProperty("proxool.url", "jdbc:mysql://localhost:3306/site_a");
info.setProperty("proxool.driver", "com.mysql.jdbc.Driver");
String url = "proxool.mypoolname";
ProxoolDatabasePool pool = new ProxoolDatabasePool(url, info);
....
Connection conn = pool.getConnection();
conn.setCatalog("site_b");
...

嘿,那是ComboPooledDataSource a类第三方图书馆还是…?谢谢。我会查的。嘿,那是ComboPooledDataSource a类第三方图书馆还是…?谢谢。我会查的。