A ResourcePool could not acquire a resource from its primary factory or source

≡放荡痞女 提交于 2019-11-29 03:50:54

For anyone that finds this question in the future. What I was doing wrong was that I was using the jtds driver and I forgot to add that in the url. So in my properties file what I should have done was:

app.url=jdbc:jtds:sqlserver://myUrl:port;databaseName=my_database

For anyone that finds this question in the future.

This can also be caused by a missing database driver.

In my case I was using the maven-shade-plugin with the minimizeJar option set. This - of course - was throwing away the jtds driver because it is not directly referenced anywhere.

This can be fixed as follows:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.6</version>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
        <configuration>
          <minimizeJar>true</minimizeJar>
          <filters>
            <filter>
              <!-- Make sure jtds is included. -->
               <artifact>net.sourceforge.jtds:jtds</artifact>
               <includes>
                   <include>**</include>
               </includes>
            </filter>
            <filter>
              <artifact>*:*</artifact>
              <excludes>
                <exclude>META-INF/*.SF</exclude>
                <exclude>META-INF/*.DSA</exclude>
                <exclude>META-INF/*.RSA</exclude>
                <exclude>META-INF/*.sf</exclude>
                <exclude>META-INF/*.dsa</exclude>
                <exclude>META-INF/*.rsa</exclude>
              </excludes>
            </filter>
          </filters>
        </configuration>
      </execution>
    </executions>
  </plugin>

This message can also be displayed, if, like me, you run your application with the Maven plugin for Tomcat:

mvn clean install tomcat7:run

and you have a provided scope element in your Maven dependency:

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.36</version>
  <scope>provided</scope>
</dependency>

The provided scope will prevent the connector from being part of the war archive and the Tomcat plugin will find no connector to establish the database connection.

Simply removing the provided scope from the dependency solves the issue.

In my case the problem was related with version mismach between MySQL and mysql-connector-java. After few days of headache I took out my ComboPooledDataSource module in a separate clean project and tried to connect with it to MySQL. However, I got stacktrace (unfortunatly I forgot what exactly were there), with which I understood that the problem is related with versions.

I got this problem on c3p0 0.9.5-pre6 with mchange-commons-java 0.2.6.3. After downgrading to c3p0 0.9.5-pre5 and mchange-commons-java 0.2.6.2, the problem disappears.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!