/ Združovanie / c3p0 nefunguje (s hibernáciou a zdrojom údajov, na tomcat) - java, hibernace, tomcat, c3p0, združovanie

c3p0 pooling nefunguje (s hibernáciou a zdrojom údajov, na tomcat) - java, hibernate, tomcat, c3p0, pooling

Na tomcat 6 máme spustenú webovú aplikáciu java, ktorá volá jar na vytrvalosť. Táto nádoba sa nachádza v priečinku libcat libcat a používa zdroj údajov tomcat:

<Resource name="jdbc/mydatasource"
auth="Container"
type="javax.sql.DataSource"
username="USER"
password="PASSWORD"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://HOST:5432/DATABASE"/>

Džbán je binárny projekt javy, ktorý používa hibernaciu 3.5.6-Final pre ORM. Konfigurácia režimu dlhodobého spánku je nasledovná:

    <property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">1800</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property name="hibernate.connection.datasource">java:jdbc/mydatasource</property>
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>

Spočiatku sme do aplikácie nezahrnuli balík hibernate-c3p0, takže nastavenia c3p0 sa nepoužili. A celá aplikácia funguje tak dobre.

Pridali sme balík hibernate-c3p0, aby sme umožnili lepšiu správu združení. Tento zväzok je teraz vložený do nádoby na vytrvalosť.

Teraz však máme túto chybu (objavuje sa po každom spustení, keď sa webová aplikácia pokúša načítať údaje z perzistencie):

[Task-Thread-for-com.mchange.v2.async.ThreadPerTaskAsynchronousRunner @ eafa5f] 13. : 46: 22 WARN - BasicResourcePool $ AcquireTask: () com.mchange.v2.resourcepool.Basi cResourcePool $ AcquireTask @ b321c1 - Pokus o akvizíciu zlyhal !!! Zúčtovanie pendi ng získava. Pri pokuse o získanie potrebného nového zdroja sa nám nepodarilo uspieť viac ako maximálny počet povolených pokusov o získanie (30). Posledné akvizície Výnimka pokusu: java.lang.NullPointerException na sun.jdbc.odbc.JdbcOdbcDriver.getProtocol (JdbcOdbcDriver.java:507) na sun.jdbc.odbc.JdbcOdbcDriver.knownURL (JdbcOdbcDriver.java:476) na sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL (JdbcOdbcDriver.java:307) na java.sql.DriverManager.getDriver (DriverManager.java:253) na adrese com.mchange.v2.c3p0.DriverManagerDataSource.driver (DriverManagerDataS ource.java:224) na adrese com.mchange.v2.c3p0.DriverManagerDataSource.getConnection (DriverManag erDataSource.java:120) na com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnecti Na (WrapperConnectionPoolDataSource.java:143) na com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnecti Na (WrapperConnectionPoolDataSource.java:132) na com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool $ 1BooledConnectionRe sourcePoolManager.acquireResource (C3P0PooledConnectionPool.java:137) na adrese com.mchange.v2.resourcepool.BasicResourcePool.doAcquire (BasicResource Pool.java:1014) na com.mchange.v2.resourcepool.BasicResourcePool.access 800 dolárov (BasicResourc ePool.java:32) na com.mchange.v2.resourcepool.BasicResourcePool $ AcquireTask.run (BasicRe) sourcePool.java:1810) na com.mchange.v2.async.ThreadPerTaskAsynchronousRunner $ TaskThread.run (T hreadPerTaskAsynchronousRunner.java:255)

Zdá sa, že je to nesprávne, pretože sa zdá, že ovládač Ojdbc sa používa namiesto ovládača postgresql definovaného v zdroji údajov.

Viete, čo môže spôsobiť túto chybu a ako ju vyriešiť?

V režime dlhodobého spánku som vyskúšal rôzne veci, ktoré som našiel v stackoverflow a na rôznych fórach, ktoré problém nevyriešia:

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>

<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="driverClass">org.postgresql.Driver</property>
<property name="hibernate.c3p0.driverClass">org.postgresql.Driver</property>

Musím presne povedať, že máme iba kontrolu nad nádobou použitou na vytrvalosť a inštaláciu koňa. Nemôžeme zmeniť webovú aplikáciu, ktorá volá nádobu.

odpovede:

1 pre odpoveď č. 1

Možno vaša aplikácia neprejde do spoločnosti Tomcatnakonfigurovaný zdroj údajov vôbec, pracuje iba v režime dlhodobého spánku? Skúsili ste preskočiť zdrojový XML (čo rovnako nie je celkom správne pre dátový zdroj c3p0) a iba nakonfigurujete režim dlhodobého spánku pre c3p0?

<!-- add these -->
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.url">jdbc:postgresql://HOST:5432/DATABASE</property>
<property name="hibernate.connection.username">USER</property>
<property name="hibernate.connection.password">PASSWORD</property>

<!-- same as before -->
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">1800</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>

<!-- REMOVE THIS! -->
<!-- <property name="hibernate.connection.datasource">java:jdbc/mydatasource</property> -->