2015-10-16 1 views
0

на Mule ESB 3.7.0 CE Я устанавливал соединение C3P0:Нет подходящий драйвер с банкой на приложения Lib

<bean id="dbConnection" 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="persistenceUnitName" value="${diap6.centraleurope.company}" /> 
    <property name="persistenceXmlLocation" value="${db.persistence.xml}" /> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
      <property name="generateDdl" value="false" /> 
      <property name="showSql" value="${diap6.centraleurope.show_sql}" /> 
     </bean> 
    </property> 
    <property name="persistenceUnitPostProcessors"> 
     <list> 
      <ref bean="entitiesCompanyLoader" /> 
     </list> 
    </property> 
    <property name="jpaProperties"> 
     <props> 
      <prop key="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider 
      </prop> 
      <prop key="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</prop> 
      <prop key="hibernate.connection.url">${diap6.centraleurope.url}</prop> 
      <prop key="hibernate.connection.username">t6valce</prop> 
      <prop key="hibernate.connection.password">t6valce</prop> 
      <prop key="hibernate.hbm2ddl.auto">false</prop> 
      <prop key="hibernate.show_sql">${diap6.centraleurope.show_sql}</prop> 
      <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect</prop> 
      <prop key="hibernate.c3p0.acquire_increment">2</prop> 
      <prop key="hibernate.c3p0.idle_test_period">60</prop> 
      <prop key="hibernate.c3p0.timeout">15</prop> 
      <prop key="hibernate.c3p0.max_size">10</prop> 
      <prop key="hibernate.c3p0.max_statements">50</prop> 
      <prop key="hibernate.c3p0.min_size">0</prop> 

      <prop key="hibernate.c3p0.maxIdleTime">360</prop> 
      <prop key="hibernate.c3p0.preferredTestQuery">SELECT 1 from dual</prop> 
      <prop key="hibernate.c3p0.idleConnectionTestPeriod">30</prop> 
      <prop key="hibernate.c3p0.acquireRetryDelay">1000</prop> 
      <prop key="hibernate.connection.autoReconnect">true</prop> 

      <prop key="hibernate.cache.use_second_level_cache">false</prop> 
      <prop key="hibernate.cache.use_query_cache">false</prop> 
      <prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory 
      </prop> 
     </props> 
    </property> 
</bean> 

если я поставил драйвер класса банку ojdbc6.jar на приложениях/MYAPP/Lib I получить эту ошибку при запуске приложения:

WARN 2015-10-16 11:26:01,691 [C3P0PooledConnectionPoolManager[identityToken->z8kfsx9ctrp0kk4mc5wl|456c58cd]-HelperThread-#0] com.mchange.v2.resourcepool.BasicResourcePool: com[email protected]13c79966 -- 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:315) ~[?:1.8.0_60] 
     at com.mchange.v2.c3p0.DriverManagerDataSource.driver(DriverManagerDataSource.java:285) ~[c3p0-0.9.5.jar:0.9.5] 
     at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) ~[c3p0-0.9.5.jar:0.9.5] 
     at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) ~[c3p0-0.9.5.jar:0.9.5] 
     at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) ~[c3p0-0.9.5.jar:0.9.5] 
     at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200) ~[c3p0-0.9.5.jar:0.9.5] 
     at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1127) ~[c3p0-0.9.5.jar:0.9.5] 
     at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1114) ~[c3p0-0.9.5.jar:0.9.5] 
     at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44) ~[c3p0-0.9.5.jar:0.9.5] 
     at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1855) ~[c3p0-0.9.5.jar:0.9.5] 
     at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) ~[mchange-commons-java-0.2.9.jar:0.2.9] 

, если я поставил банку в системной библиотеке мула: мулы автономной-3.7.0/библиотека/выбрать драйвер будет найден, и приложение запускается правильно.

Я бы предпочел связать драйвер с приложением, но кажется невозможным. У вас есть решения? Благодарю.

ответ

0

Я думаю, что это относится к проблеме загрузчика класса. Библиотека c3p0 находится на mule-standalone-3.7.0/lib/opt, поэтому, когда она вызывает java.sql.DriverManager.getDriver, проверка загрузчика класса в контексте мула при загрузке драйвера другим загрузчиком классов на уровне приложения. Если я поставил драйвер oracle на mule-standalone-3.7.0/lib/opt, оба c3p0 и драйвер oracle принадлежат одному загрузчику классов, и метод getDriver() работает хорошо.

Смежные вопросы