Eclipse Hot Code Replace Fail - переиздание веб-приложения - PullRequest
6 голосов
/ 31 августа 2010

Я использую функцию горячей замены Java в веб-приложении на Tomcat. После некоторого изменения подписи класса я получил диалоговое окно Eclipse «Hot Code Replace Fail» - я так понимаю.

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

Есть ли способ сообщить отладчику, что новая версия класса уже загружена в новый загрузчик классов веб-приложения и что она сохранена для продолжения?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 19 февраля 2015

Почему бы вам не попробовать с JRebel?JRebel - это Java-агент JVM, который интегрируется с серверами приложений, что позволяет перезагружать классы существующим загрузчикам классовТолько измененные классы перекомпилируются и мгновенно перезагружаются в работающем приложении.JRebel подключается к IDE и системам сборки.Классы и статические ресурсы загружаются прямо из рабочей области.http://zeroturnaround.com/software/jrebel/

С уважением, Андреа

0 голосов
/ 21 февраля 2015

Пробовали ли вы Параметры сервера - обслуживать модули без публикации вместе с публикацией?

Server Options
Publishing

Также не уверен, что вы говорите о других приложениях.

0 голосов
/ 20 февраля 2015

Есть старый проект PHD.Парня, который сделал это, привел Oracle, но его работа не попала в Java 8 и, надеюсь, будет замечена в Java 9, но, скорее всего, будет в Java 10. Думаю, есть новая версия этого для Java 8.Я еще не пробовал.

Мой оригинальный вопрос для дополнительной информации: Расширенный код горячей замены в JDK 8?

И страница проекта на Github: https://github.com/dcevm/dcevm

С этим вы можете оперативно заменить практически любое изменение класса, освобождая вас от перезапуска JDK после этого.(кроме побочных эффектов для статических объектов и синглетонов, но это было бы логично)

...