Я ищу подсказку, как сделать кота CI готовый или контейнер сервлета / контейнер приложения, которые стоят, часто повторно развертывается как, они происходят при использовании Гудзона ci.
Я испытал тот Tomcat 6, правильно не не развертывает веб-приложения, оставляя классы в jvm.
Например, я контролировал кота 6 с VisualVM: на запуске 2 000 классов, на развертываются приложения 3000 после того, как повторно развернут 4000 и повторно развернут 5 000 классов и так далее - ведущий к катастрофическим отказам, утечкам памяти...
Хорошо надежда у каждого есть подсказка на коте и непрерывной интеграции или других серверах приложений.
Обновление : я провел несколько тестов с умеренно сложным веб-приложением, используя Spring, Hibernate, GWT, C3P0 и HsqlDB.
Стандартный Tomcat 6.0.24 работает нормально, если вы используете клиентский компилятор. Он работает на десяти повторных развертываниях, тогда как серверный компилятор выходит из строя на четвертом. Я предлагаю вам попробовать с флагом -client
.
Попытка отладить использование серверного компилятора оказалась бесплодной, так как Eclipse MAT не показал корней сборщика мусора для загрузчиков классов, но они были сохранены. Часто упоминаемая ошибка, раздувание PermHeap в и только на серверной виртуальной машине , как сообщается, была исправлена в Java 6 с обновлением 16, но мои тесты терпят неудачу с Java 6 с обновлением 16.
Tomcat был проверен и дважды проверен. в таких проблемах с памятью, и довольно часто виноваты приложения. Нет, это не означает, что возникновение такой утечки перманентного газа непросто.
Здесь есть две возможности:
Если вы действительно хотите отладить эту проблему и убедиться, что это ошибка Tomcat, вы можете использовать анализатор памяти Eclipse . У них есть хорошая запись в блоге, объясняющая, как отлаживать проблемы PermGen .
Мне всегда нравится принимать радикальные меры, чтобы убедиться, что все чисто и находится в полностью воспроизводимом состоянии при запуске
1) убить tomcat
2) удалить его с диска
3) разархивировать чистую версию
4) перезаписать ваши личные измененные конфигурированные файлы
5) перезапустить tomcat
6) развернуть ваше приложение
Взгляните на Apache Cactus - это фреймворк для серверного модульного тестирования в контейнере. Он работает практически с любым контейнером сервлетов.