我正在开发一个查询多个数据库的监控插件。我想使用HikariCP来保持连接打开,但我不知道如何实例化连接池。
HikariCP是否只使用一个池来存储多个数据库?或者一个数据库只有一个池,我的责任是实例化我将使用的数据库中的尽可能多的池。
后者:一个池与一个数据库配置参数相关联,您的责任是实例化我将使用的数据库中的尽可能多的池。相应地创建池。
我有一个DataSourceFactory
来实现这一点:
public final class DataSourceFactory {
private static final Logger LOG = LoggerFactory.getLogger(DataSourceFactory.class);
//connection to MySQL
private static DataSource mySQLDataSource;
//connection to PostgreSQL
private static DataSource postgresDataSource;
private DataSourceFactory() { }
//generic method to create the DataSource based on configuration
private static DataSource getDataSource(String configurationProperties) {
Properties conf = new Properties();
try {
conf.load(DataSourceFactory.class.getClassLoader().getResourceAsStream(configurationProperties));
} catch (IOException e) {
LOG.error("Can't locate database configuration", e);
}
HikariConfig config = new HikariConfig(conf);
HikariDataSource dataSource = new HikariDataSource(config);
return dataSource;
}
//retrieve the datasource for MySQL
public static DataSource getMySQLDataSource() {
LOG.debug("Retrieving data source for MySQL");
if (mySQLDataSource == null) {
synchronized(DataSourceFactory.class) {
if (mySQLDataSource == null) {
LOG.debug("Creating data source for MySQL");
mySQLDataSource = getDataSource("mysql-connection.properties");
}
}
}
return mySQLDataSource;
}
//retrieve the datasource for Postgres
public static DataSource getPostgresDataSource() {
LOG.debug("Retrieving data source for Postgres");
if (postgresDataSource == null) {
synchronized(DataSourceFactory.class) {
if (postgresDataSource == null) {
LOG.debug("Creating data source for Postgres");
postgresDataSource = getDataSource("postgres-connection.properties");
}
}
}
return postgresDataSource;
}
}
下面是一个文件配置示例:
dataSourceClassName=com.mysql.jdbc.jdbc2.optional.MysqlDataSource
dataSource.url=jdbc:mysql://theHostName:thePort/nameOfDatabase
dataSource.user=user
dataSource.password=thIsIsN07mYR3alPa$s
dataSource.cachePrepStmts=true
dataSource.prepStmtCacheSize=100
dataSource.prepStmtCacheSqlLimit=2048
dataSource.useServerPrepStmts=true
autoCommit=false
maximumPoolSize=10
从bugu-mongo 2.11版本开始,支持连接到多个数据库。 在前面的示例代码中,我们都只是连接到一个数据库: //默认的数据库连接 BuguConnection conn = BuguFramework.getInstance().createConnection(); conn.setHost("192.168.0.100"); conn.setPort(27017); conn.setU
我正在尝试使用hikaricp和java为Oracle数据库创建一个连接池。 这是我下面的代码。。 我正在降低误差。 任何建议也将是有益的..谢谢..
当我试图使用Spring Boot 2.2.1连接到DB2时。HikariCP池无法成功连接,但同时连接到JDBC。 null 附加的属性文件:
PHP interbase中的Noob。 我正在做一个项目,我需要将数据保存在两个独立的数据库中。我使用默认的MySQL数据库,而另一个使用firebird。已下载此库 这是我的数据库。配置文件夹中的php。 需要多个数据库的函数 模型 我对create_purchaseorder函数没有问题,但是当我运行“save”函数时,它会给我这个错误 致命错误:调用未定义的函数ibase_connect(
我在MySQL上有2个数据库。ge和GE_SC001。 我可以通过我的ASP.NET mvc应用程序在本地访问这两个。 Web.config null 稍后,当我在web服务器上部署应用程序,并尝试从本地机器访问它们时。我将server=localhost更改为机器的面向外部的IP地址。现在我只能访问一个GE。当我尝试访问第二个时,它会给我错误。 拒绝用户“root”@“对数据库”GE_SC001
问题内容: 直到现在,每当查询数据库时,我都会打开与数据库的新连接。如何实现打开连接后就可以重用的属性? 完成此操作后,请告诉我是否可以泄漏资源。 问题答案: 基本上,您需要JDBC连接池,通常需要实现接口。看看dbcp和c3p0。您的容器/服务器可能已经提供了连接池的实现。 每次 打开 连接时使用连接池时,实际上是从该连接中取出一个连接(如果池为空则 打开 一个连接)。当 关闭 连接时,它实际上