带有连接池的MySQL DataSource,在运行时设置URL

时间:2015-11-09 11:07:32

标签: tomcat jdbc connection-pooling mysql-connector

我有一个在Tomcat中运行的Java服务,它每秒从MySQL数据库中进行几十次短数据库读取。显然,我需要一个带连接池的DataSource。 我在运行时从安全存储中获取连接字符串,因此从容器中通过JNDI获取DataSource实例的最常见方式似乎不适用于我的情况。

我找到了两种可能的解决方案,我在他们之间犹豫不决。

  1. 在我的代码中创建一个MysqlConnectionPoolDataSource实例 - 更吸引我,因为它没有与特定的容器耦合。但是,this post声称这是完全错误的。
  2. 使用来自org.apache.tomcat.jdbc.pool的Tomcat的DataSource和PoolProperties,如"Plain Ol' Java" example

1 个答案:

答案 0 :(得分:1)

或者第三种方式,主要是使用Apache Commons Database Pooling AKA commons-pooling,它允许您以编程方式创建数据库池:

private BasicDataSource pool = new BasicDataSource();

pool.setDriverClassName(driver);
pool.setUrl(url);
pool.setUsername(user);
pool.setPassword(pass);
pool.setInitialSize(size);

在此之后,您可以使用pool来执行您想要的操作。当然,您可以使用其他DataSource实现。

这样你就不会加入tomcat,也不需要容器配置文件。