C3P0 Verbindungs-Pool-java.sql.SQLException: No suitable driver Ausnahme

Ich bin mit c3p0 Verbindungs-pooling in meiner web-Anwendung, wenn ich auf der dieser Anwendung bin ich immer java.sql.SQLException: No suitable driver Ausnahme, die ich verwendet Datasource.java Klasse für die Herstellung der Verbindung pools, Utils.java für das Lesen von Eigenschaften von datasouce.properties Datei.

voll Execption ist (was ich immer bin 10 timese), warum die exception kommt. ich bin mit odbc6.jar - Datei für oracle-Treiber, bitte helft mir

2015-09-07 16:53:32 INFO  AbstractPoolBackedDataSource:527 - Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 10, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, dataSourceName -> z8kflt9b1agzamcthrvgf|1d84bc10, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> null, extensions -> {}, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, forceUseNamedDriverClass -> false, identityToken -> z8kflt9b1agzamcthrvgf|1d84bc10, idleConnectionTestPeriod -> 0, initialPoolSize -> 10, jdbcUrl -> jdbc:oracle:thin:@localhost:1521:LOCALDB, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 200, maxStatements -> 2100, maxStatementsPerConnection -> 0, minPoolSize -> 10, numHelperThreads -> 3, preferredTestQuery -> null, privilegeSpawnedThreads -> false, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ]
2015-09-07 16:54:02 WARN  BasicResourcePool:1911 - com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@295bc68c -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getDriver(DriverManager.java:264)
    at com.mchange.v2.c3p0.DriverManagerDataSource.driver(DriverManagerDataSource.java:285)
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)
    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
2015-09-07 16:54:02 WARN  BasicResourcePool:1911 - com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@78da5318 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 

JSP-Datei : -

<%
    Datasource ds = Datasource.getInstance();
    Connection connection = ds.getConnection();
    try{
    Statement st = connection.createStatement();
    ResultSet rs = st.executeQuery("select * from app_userlist");
    while(rs.next()){
        System.out.println(rs.getInt(1));
    }
    }catch(Exception e){

    }
    %>

Datasource.java

public class Datasource {       

private Datasource() throws IOException, SQLException {
    //load datasource properties   
    props = Utils.readProperties("datasource.properties");
    cpds = new ComboPooledDataSource();
    cpds.setJdbcUrl(props.getProperty("jdbcUrl"));
    cpds.setUser(props.getProperty("username"));
    cpds.setPassword(props.getProperty("password"));

    cpds.setInitialPoolSize(new Integer((String) props.getProperty("initialPoolSize")));
    cpds.setAcquireIncrement(new Integer((String) props.getProperty("acquireIncrement")));
    cpds.setMaxPoolSize(new Integer((String) props.getProperty("maxPoolSize")));
    cpds.setMinPoolSize(new Integer((String) props.getProperty("minPoolSize")));
    cpds.setMaxStatements(new Integer((String) props.getProperty("maxStatements")));

    Connection testConnection = null;
    Statement testStatement = null;

    //test connectivity and initialize pool
    try {
           testConnection = cpds.getConnection();
           testStatement = testConnection.createStatement();
           testStatement.executeQuery("select 1+1 from DUAL");
        } catch (SQLException e) {
            throw e;
        } finally {
            testStatement.close();
            testConnection.close();
    }

}

public static Datasource getInstance() throws IOException, SQLException {
    if (datasource == null) {
          datasource = new Datasource();
          return datasource;
        } else {
          return datasource;
        }
}

  public Connection getConnection() throws SQLException {
      return this.cpds.getConnection();
  } }

Utils.java

public class Utils {

   static public Properties readProperties(String filename) throws IOException{
      Properties props = new Properties();
      ClassLoader loader = Thread.currentThread().getContextClassLoader();
      InputStream stream = loader.getResourceAsStream(filename);
      props.load(stream);
      return props;
   } 
}

datasource.Eigenschaften:-

driverClass =oracle.jdbc.OracleDriver
jdbcUrl =jdbc:oracle:thin:@localhost:1521:userdb
username =user
password =xxxx                                                 
factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
maxPoolSize="50"   
minPoolSize="15"
acquireIncrement="3"
acquireRetryAttempts = "0"
acquireRetryDelay = "3000"
breakAfterAcquireFailure = "false"
maxConnectionAge = "60"
maxIdleTime = "30"
maxIdleTimeExcessConnections = "10"
idleConnectionTestPeriod = "15"
testConnectionOnCheckout = "true"
preferredTestQuery = "SELECT 1"
debugUnreturnedConnectionStackTraces = "true"  
autoCommitOnClose="true"
  • Sie haben wahrscheinlich nicht enthalten die Oracle-Treiber in den classpath.
  • ich habe nicht legen Sie die treiberklasse zu ComboPooledDataSource Objekt, vielen Dank für dein Kommentar @RogerGustavsson
Schreibe einen Kommentar