Разработка с Tomcat - PullRequest
       35

Разработка с Tomcat

1 голос
/ 02 декабря 2009

Я использую TC 6 в «режиме разработки», например. классы приложений постоянно меняются, и я хочу видеть последнюю версию с минимальными хлопотами.

Некоторое время я использовал приложение TC manager 'HTML' для перезагрузки; это работало до определенного момента, но я продолжал получать ошибки OOM через некоторое время. Серфинг предположил, что при повторной загрузке ТС имеет место утечка. Плюс это было хлопотно, дополнительный шаг после компиляции каждый раз.

Итак, я переключился на установку 'reloadable true' в файле context.xml. Это работало до определенного момента и не требовало никаких дополнительных шагов, но я снова получаю ошибки OOM (реже, но все же много раз в день). Больше серфинга предполагает, что здесь также могут быть утечки ТС.

Если я запускаю приложение с «reloadable true», но ничего не перекомпилирую, или с «reloadable false», оно работает вечно (и VisualVM считает, что это нормально в отношении памяти).

Итак, я как бы пришел к выводу, что каждый раз, когда я перекомпилирую класс, я должен полностью перезагружать TC. Это огромная боль, но, возможно, лучше, чем случайные периодические сбои OOM. Просто подумал, есть ли у кого идеи получше. Может быть, я должен попробовать другой контейнер.

Приветствия и спасибо!


Большое спасибо за ответы. JRebel выглядит как отличный план, я попробую это; Похоже, что он разработан специально для решения этой проблемы, что говорит о том, что я не придумываю это, и это достаточно дешево, так что если это афера, ничего страшного.

Приложение выполняет несколько простых стандартных вызовов MySQL через ConnectorJ и по умолчанию выделяет память из коробки. Честно говоря, хотя я не понимаю, насколько эти вещи актуальны, поскольку приложение работает нормально, пока не происходит перезагрузка.

Еще раз спасибо. Еще раз, я не могу поверить, насколько полезен ТАК!

Ответы [ 5 ]

0 голосов
/ 08 октября 2010

Вот пример того, как использовать JRebel и JSF http://przemek -nowak.pl / 2010/10 / jrebel-czyli-jak-przyspieszyc-prace-programisty / , может быть кому-то полезно. 1004 *

0 голосов
/ 02 декабря 2009

Есть ли у вас что-то особенное в вашем приложении - например, запуск собственных (не демоновых) потоков или использование библиотек, которые так делают? По крайней мере, в этом случае вы получите утечки.

Я занимаюсь разработкой с использованием Eclipse, и Tomcat управляет Eclipse для разработки. Tomcat автоматически перезагружает приложение после каждой компиляции - я еще не испытывал никакого увеличения или утечки памяти, а также когда у меня есть настройка для разработки на удаленном сервере tomcat devel - развертывание приложения из сценария ant. Несмотря на утечку, когда я начал использовать java.util.concurrent.Executors, который (по умолчанию) создает потоки, не являющиеся демонами.

0 голосов
/ 02 декабря 2009

Вы можете найти этот вопрос полезным.Я помню, как видел здесь вопрос, в котором предлагалось использовать jRockit для решения этой проблемы, но я не могу вспомнить, где ... Я буду искать и обновлять этот ответ, когда найду его.

На самом деле это был JRebel который обещает решить эту проблему.Я сам этим не пользовался, поэтому не могу сказать, насколько обоснован иск, но я рассматриваю его ...

0 голосов
/ 02 декабря 2009

В результате мы получили сценарии для повторного развертывания в Tomcat - сборка из системы контроля версий, выключение tomcat, удаление устаревших файлов из tomcat, развертывание новой войны, перезапуск tomcat, проверка журналов tomcat на наличие ошибок.

В противном случае у нас проблемы с памятью.

0 голосов
/ 02 декабря 2009

Перегрузка класса Tomcat раньше была глючной - и OOM является проявлением этого. Причал гораздо надежнее в этом отношении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...