2013-10-11 4 views
1

В продолжение этой Websphere hangs due to c3p0 вопросC3P0 висит - Java 1,6

Наша JSP приложение само по себе является унаследованным кодом (Записано около 5 лет назад), и мы должны поддерживать его в течение следующих 3-х лет. С обновлениями для Oracle & WAS существующий код становится нестабильным. Перезапись не является вариантом из-за факторов издержек

Один из таких problem пришел, когда нам пришлось переехать в Oracle 11. После некоторых исследований выяснилось, что объединение пулов поможет. Правильное исправление заключается в внесении изменений в код, но стоимость приходит в картину.

После использования соединения pooing в течение некоторого времени мы выяснили, что приложение JSP в WebSphere висит чаще, чем обычно, после введения C3P0. Однако введение C3P0 решил одну проблему Max cursors reached error in JSP + Hibernate

Предпосылками на http://www.mchange.com/projects/c3p0/ говорит C3P0 хорошо работает с Java 1.4 и Java 1.5

Мы используем Java 1.6.x

ли какой-либо один имел каких-либо успехов в получении C3P0 работает с Java 1.6?

Есть ли советы/тонкая настройка, которые я могу сделать, чтобы c3P0 работал с Java 1.6?

Мои настройки C3P0

<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 
    <property name="hibernate.c3p0.min_size">2</property> 
    <property name="hibernate.c3p0.max_size">40</property> 
    <property name="hibernate.c3p0.timeout">350</property> 
    <property name="hibernate.c3p0.idle_test_period">300</property> 
    <property name="hibernate.c3p0.max_statements">0</property> 
    <property name="hibernate.c3p0.acquire_increment">1</property> 
    <property name="hibernate.c3p0.unreturnedConnectionTimeout">60</property> 
    <property name="hibernate.c3p0.debugUnreturnedConnectionStackTraces">true</property> 

ответ

1

c3p0 отлично работает вообще с Java 1.6+.

Возможно, вы захотите перейти на версию c3p0 0.9.2.1 или последнюю версию 0.9.5, если вы еще этого не сделали (хотя более ранние версии работают в версии 1.6+).

вам нужно выяснить, почему ваше приложение висит. в общем, во время зависания вы должны сбросить свои потоки и проверить следы стека, чтобы узнать, что происходит. если Threads висят, ожидая Подключения от c3p0 (т. е. в методе awaitAvailable()), вы, вероятно, имеете утечку Connection и захотите отладить его, как в previous hang thread you reference.

+0

Спасибо '@ steve-waldman' за ответ. Я обновил до 0.9.5 до 4 и, что интересно, ошибка, возникшая во время запуска, больше не появляется, но, к сожалению, зависание больше 0.9.2.1. Я знаю, что наше приложение кодируется очень плохо, но моя задача заставить его работать «как-то». Таким образом, c3p0 является моим единственным вариантом, так как мы можем использовать hte-приложение, просто сконфигурировав c3p0. Веб-приложение настолько старо и сложно изменить за короткое время. – KK99

+0

хорошая вещь о зависаниях в том, что они отлаживаются. пусть ваше приложение войдет в его зависание, а затем трассировка стека JVM-дампа (например, через ctrl- \ или kill -QUIT или ctrl-break в Windows). что делают потоки, когда они висят? если они находятся в режиме ожидания c3p0Available(), у вас, вероятно, есть утечка Connection, которую вы можете отлаживать по http://stackoverflow.com/questions/17272141/websphere-hangs-due-to-c3p0, если нет, ну, вы По крайней мере, я получу некоторое представление о том, что вам нужно исправить! –

+0

Спасибо. Я настроил журналы, и я вижу это '2013-10-14 10: 32: 03,191 WARN [ActiveManagementCoordinator]: C3P0Registry mbean уже зарегистрирована. Вероятно, это означает, что приложение, использующее c3p0, не было развернуто, но не все источники PooledData были закрыты до развертывания. Это может привести к утечке ресурсов с течением времени. Пожалуйста, позаботьтесь о том, чтобы закрыть все PooledDataSources.' Любая идея, что это значит? – KK99

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