Sysdeo Tomcat DevLoader - горячее развертывание Java-класса приводит к перезапуску всего приложения - PullRequest
3 голосов
/ 01 июня 2010

Я использую плагин sysdeo tomcat 3.2.1 с eclipse 3.5.1 (Galileo) и tomcat 5.5.23 на Windows XP. Я могу заставить плагин tomcat работать в eclipse и распаковать devloader.zip в [tomcat] \ server \ classes. Я также обновил контекст, и теперь у него есть эта запись:

<Context path="/myapp1" reloadable="true" docBase="F:\Work\eclipse_workspace\myapp1" workDir="F:\Work\eclipse_workspace\myapp1\work" >
    <Logger className="org.apache.catalina.logger.SystemOutLogger" verbosity="4" timestamp="true"/>
    <Loader className="org.apache.catalina.loader.DevLoader" reloadable="true" debug="1" useSystemClassLoaderAsParent="false" />
</Context>

Я активировал devloader (в Project> Properties> Tomcat> Devloader Classpath) и «проверил» все мои классы и фляги, я не «проверил» commons-loggin.jar jsp-api.jar, servlet-api .jar.

Таким образом, при запуске tomcat через плагин я могу запустить его с помощью devloader, как показано в представлении консоли eclipse

[DevLoader] Starting DevLoader
[DevLoader] projectdir=F:\Work\eclipse_workspace\myapp1
[DevLoader] added file:/F:/Work/eclipse_workspace/myapp1/WEB-INF/classes/
[DevLoader] added file:/F:/Work/eclipse_workspace/myapp1/WEB-INF/lib/activation.jar

Однако, если я даже добавлю один файл System.out.println в любой файл Java и сохраню его, все приложение будет перезагружено (занимает ~ 80 секунд), что так же хорошо, как остановка / запуск самого tomcat. Я пытался добавить -Xdebug в JAVA_OPTS в catalina.bat, но не повезло: (

Подскажите, пожалуйста, где я могу сделать это неправильно ..

Обратите внимание, что я могу «заново развернуть» все приложение на tomcat, но это не то, что мне нужно, я ищу возможность вносить небольшие изменения в Java-классы «на лету» во время кодирования / отладки без необходимости дождитесь полного перезапуска приложения. Другая неприятность заключается в том, что перезапуск tomcat / application приводит к потере прогресса сеанса / отладки.

Подскажите, пожалуйста, как мне это сделать.

PS: Я не использую какие-либо скрипты ant / maven в явном виде, я просто полагаюсь на eclipse, чтобы сделать сборку для меня (что она и делает).

Ответы [ 2 ]

0 голосов
/ 03 мая 2012

Я знаю, что это старая ветка, но что если вы удалите reloadable="true" из записи Context?

С сайта Tomcat:

Установите значение true, если вы хотите, чтобы Catalina отслеживала классы в / WEB-INF / classes / и / WEB-INF / lib на предмет изменений и автоматически перезагружала веб-приложение в случае обнаружения изменений. Эта функция очень полезна при разработке приложений, но требует значительных затрат времени выполнения и не рекомендуется для использования в развернутых производственных приложениях. Вот почему по умолчанию для этого атрибута установлено значение false. Однако вы можете использовать веб-приложение Manager для запуска перезагрузки развернутых приложений по требованию.

Я не уверен, что true делает для вас там, так как когда я делаю с ним изменения кода false (или отсутствует), он все равно находит изменения и выполняет их горячее развертывание (хотя у меня docBase установлен на мой рабочий реж). Может быть, это более полезно, если к соответствующему пути добавлен новый класс или JAR? Или если вы не используете свой рабочий каталог в качестве docBase? Да, держу пари, что это больше для последней ситуации, так что Eclipse / Tomcat найдет изменение в локальном коде и затем отправит его в удаленную версию (в отношении Eclipse, не обязательно для вашей машины) ... так что если вы установите ваш docBase для вашего рабочего каталога, вам, вероятно, никогда не понадобится устанавливать reloadable в true.

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

Если вам не требуется загрузка DevLoader, и по ошибке вы что-то щелкнули в Eclipse: откройте server.xml , удалите Контекст, который указывает на DevLoader, а затем попробуйте запустить Tomcat. Вы не получите никакой ошибки (при условии, что вам не нужен Devloder).

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