Пул соединений Jboss или пул соединений Hibernate - PullRequest
0 голосов
/ 14 октября 2011

Мы используем Spring + Hibernate на сервере приложений Jboss.Мы использовали пул соединений Jboss для всех наших потребностей в пулах соединений приложений, используя файл * -ds.xml следующим образом:

<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>dev_1</user-name>
<password>*********</password> 
<min-pool-size>5</min-pool-size>
<max-pool-size>15</max-pool-size> // production system has more than 80 connections
<idle-timeout-minutes>1</idle-timeout-minutes>

В последнее время мы видим повторяющиеся исключения «Сброс соединения» и «Нет управляемых соединений».Мы используем управление транзакциями Spring, поэтому мы вручную не закрываем никаких соединений.Нужно ли закрывать соединения вручную или мы должны отказаться от пула Jboss Connection и использовать механизм пула соединений c3po, или мы можем использовать их оба вместе.

Наши свойства гибернации в Sessionfactory ...

<property name="hibernateProperties">
        <props>
            <prop key="hibernate.show_sql">false</prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect</prop>
            <prop key="hibernate.jdbc.batch_size">0</prop>
            <prop key="hibernate.jdbc.factory_class">net.bull.javamelody.HibernateBatcherFactory</prop>
            <prop key="hibernate.use_streams_for_binary">true</prop>
            <prop key="hibernate.cache.use_query_cache">true</prop>
            <prop key="hibernate.cache.use_second_level_cache">true</prop>
            <prop key="hibernate.cache.provider_configuration_file_resource_path">ehcache.xml</prop>
            <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
            <prop key="hibernate.cache.query_cache_factory">com.cisco.ipcentral.hibernate.cache.StandardQueryCacheFactory</prop>
            <!-- applicationContext hibernateProperties merge-point -->
        </props>
    </property>

1 Ответ

0 голосов
/ 14 октября 2011

Я не знаком с "пулом соединений JBoss", но, похоже, у вас есть соединения, которые имеют тайм-аут или обрываются брандмауэром, пока они находятся в пуле.В большинстве пулов соединений вы можете задать «запрос проверки», который будет запущен до того, как будет разослано соединение, чтобы убедиться, что соединение еще живо.С его помощью пул будет отбрасывать мертвые соединения, прежде чем они будут переданы вашему приложению для использования.

Обновление: Может быть, вы ищете <check-valid-connection-sql>?

...