У меня есть база кода, где слушатель взаимодействует с базой данных MySql, этот слушатель получает огромное количество записей из очереди (ActiveMQ), которые должны храниться в базе данных.
Проблема заключается в том, что большие наборы данных должны быть введены в исключение бросков спящего режима базы данных: -
org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection
Кто-нибудь сталкивался с такой же проблемой ?! Я попытался синхронизировать метод, который находится в Слушателе, но когда я это делаю, Сообщения из очереди застряли.
Это трассировка стека: -
at org.springframework.jms.listener.DefaultMessageListenerContainer.receiveAndExecute(DefaultMessageListenerContainer.java:493)
11:42:59,330 ERROR [stderr] (crmMessageListenerContainer-4) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:904)
11:42:59,332 ERROR [stderr] (crmMessageListenerContainer-4) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:857)
11:42:59,334 ERROR [stderr] (crmMessageListenerContainer-4) at org.springframework.core.task.SimpleAsyncTaskExecutor$ConcurrencyThrottlingRunnable.run(SimpleAsyncTaskExecutor.java:203)
11:42:59,336 ERROR [stderr] (crmMessageListenerContainer-4) at java.lang.Thread.run(Thread.java:748)
11:42:59,337 ERROR [stderr] (crmMessageListenerContainer-4) Caused by: java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:/omoto
11:42:59,338 ERROR [stderr] (crmMessageListenerContainer-4) at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:137)
11:42:59,339 ERROR [stderr] (crmMessageListenerContainer-4) at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81)
11:42:59,341 ERROR [stderr] (crmMessageListenerContainer-4) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
11:42:59,342 ERROR [stderr] (crmMessageListenerContainer-4) ... 28 more
11:42:59,343 ERROR [stderr] (crmMessageListenerContainer-4) Caused by: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:/omoto
11:42:59,345 ERROR [stderr] (crmMessageListenerContainer-4) at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:390)
11:42:59,346 ERROR [stderr] (crmMessageListenerContainer-4) at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:368)
11:42:59,348 ERROR [stderr] (crmMessageListenerContainer-4) at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:464)
11:42:59,350 ERROR [stderr] (crmMessageListenerContainer-4) at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:129)
11:42:59,352 ERROR [stderr] (crmMessageListenerContainer-4) ... 30 more
11:42:59,352 ERROR [stderr] (crmMessageListenerContainer-4) Caused by: javax.resource.ResourceException: IJ000655: No managed connections available within configured blocking timeout (30000 [ms])
11:42:59,354 ERROR [stderr] (crmMessageListenerContainer-4) at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:377)
11:42:59,356 ERROR [stderr] (crmMessageListenerContainer-4) at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:397)
11:42:59,357 ERROR [stderr] (crmMessageListenerContainer-4) at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:365)
11:42:59,359 ERROR [stderr] (crmMessageListenerContainer-4) at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:329)
Вот код конфигурации: -
hibernate.cfg.xml: -
<hibernate-configuration>
<session-factory>
<property name="c3p0.min_size">10</property>
<property name="c3p0.max_size">20</property>
<property name="c3p0.timeout">1800</property>
</session-factory>
</hibernate-configuration>
persistance.xml: -
<property name="hibernate.c3p0.min_size"
value="5"/>
<property name="hibernate.c3p0.max_size"
value="20"/>
<property name="hibernate.c3p0.timeout"
value="300"/>
<property name="hibernate.c3p0.max_statements"
value="50"/>
<property name="hibernate.c3p0.idle_test_period"
value="3000"/>