Hibernate + c3p0 + SQL Server - PullRequest
       7

Hibernate + c3p0 + SQL Server

1 голос
/ 17 августа 2011

Я делаю сервер с HIBERNATE и SQL Server. Когда я использую пул соединений c3p0 и делаю нагрузочный тест, я получаю блокировку в java (в c3p0).

В дампе темы вижу:

at java.lang.Object.wait(Object.java:-1)
at java.lang.Object.wait(Object.java:485)
at com.mchange.v2.c3p0.stmt.GooGooStatementCache.acquireStatement(GooGooStatementCache.java:552)
at com.mchange.v2.c3p0.stmt.GooGooStatementCache.checkoutStatement(GooGooStatementCache.java:168)
at com.mchange.v2.c3p0.impl.NewPooledConnection.checkoutStatement(NewPooledConnection.java:234)
   - locked <0x124d> (a com.mchange.v2.c3p0.impl.NewPooledConnection)
at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:199)
   - locked <0x124e> (a com.mchange.v2.c3p0.impl.NewProxyConnection)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:534)
...

или

at java.lang.Object.wait(Object.java:-1)
at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1315)
at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557)
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:78)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)

и через некоторое время все потоки заблокированы.

Но если я использую внутренний пул спящих соединений - все ок. Я не вижу никаких замков. Но я не могу использовать внутренний пул соединений Hibernate, потому что он не для производства (из документов Hibernate).

Может кто-нибудь помочь мне, пожалуйста.

1 Ответ

0 голосов
/ 17 августа 2011

Я слышал, что c3p0 мертв, вам лучше использовать что-нибудь еще. Если вы используете Tomcat, вы можете перейти к пулу Apache Tomcat, в противном случае проверьте этот поток Выбор библиотеки пула соединений Java JDBC в 2011/2012?

...