【问题标题】:Trying to connect our driver to a connection pool尝试将我们的驱动程序连接到连接池
【发布时间】:2018-05-29 20:25:11
【问题描述】:

基本上我的问题是我正在尝试将连接池合并到我的应用程序中。在我的数据库连接类中,我们为池属性设置了所有不同的属性。

public static Connection getConnection() {

    try { 

        PoolProperties poolProperties = new PoolProperties();



        String url = prop.getUrl();
        String drivername = prop.getDriverClassName();
        String username = prop.getUsername();
        String password = prop.getPassword();
        conn = DriverManager.getConnection(url, username, password);




        poolProperties.setUrl(url);
        poolProperties.setDriverClassName(drivername);
        poolProperties.setUsername(username);
        poolProperties.setPassword(password);

        poolProperties.setMaxActive(MAX_ACTIVE);
        poolProperties.setMaxIdle(MAX_IDLE);
        poolProperties.setMinIdle(MIN_IDLE);
        poolProperties.setInitialSize(MIN_POOL_SIZE);
        poolProperties.setMaxWait(MAX_WAIT);
        poolProperties.setRemoveAbandonedTimeout(REMOVE_ABANDONED_TIMEOUT);
        poolProperties.setMinEvictableIdleTimeMillis(MIN_EVICTABLE_IDLE_TIMEMILLIS);
        poolProperties.setValidationQuery(Validation_Query);
        poolProperties.setValidationInterval(VALIDATION_INTERVAL);
        poolProperties.setTimeBetweenEvictionRunsMillis(TIME_BETWEEN_EVICTION_RUNS_MILLTS);
        DataSource datasource = new org.apache.tomcat.jdbc.pool.DataSource();

         ((org.apache.tomcat.jdbc.pool.DataSource) datasource).setPoolProperties(poolProperties);
          datasource.createPool();



         logger.info("The connection is from" + prop.getDriverClassName());     

当我们在 SOAP UI 上运行它时,它仍然会从我们的数据库中返回我们想要的信息。但是我仍然收到如下错误控制台

java.sql.SQLException: com.microsoft.jdbc.sqlserver.SQLServerDriver
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254)
at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:702)
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:634)
at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:488)
at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103)     

我不太确定问题到底出在哪里。我认为连接池与驱动连接不成功

【问题讨论】:

  • 您的应用程序是否在 tomcat 中运行?

标签: java database spring connection connection-pooling


【解决方案1】:

我看到您使用的是 tomcat,因为您使用的是 tomcat jdbc 池配置。

JDBC 驱动程序必须对与数据相同的类加载器可见 源工厂本身。数据源工厂库放置在 Tomcat 自己的 /lib 文件夹,因此由 Tomcat 的“common”加载 类加载器。

你的问题听起来很像你在你的 对“common”不可见的应用程序库文件夹 类加载器。所以从技术上讲,你必须将 JDBC 驱动程序放在 Tomcat 自己的 /lib 文件夹(或者,至少在一个可配置的路径中 由 /conf/catalina.properties 中的 common.loader 设置指定) 为了使其对数据源工厂可见。

【讨论】:

  • 如何访问 Tomcat 的 /lib 文件夹以在其中放置 JDBC 驱动程序?
  • 你是如何部署你的应用程序的?你不是在tomcat中部署吗?
  • 是的,我们在 tomcat 中部署
  • 好的,您需要将 jdbc 驱动 jar 放入 tomcat/lib 文件夹并尝试再次运行。
  • 是的,我将 tomcat jdbc jar 放入 tomcat/lib 中,但我们仍然遇到同样的问题
猜你喜欢
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 2014-06-30
  • 2012-10-21
相关资源
最近更新 更多