Скажите Jetty перезагрузить при изменении веб-приложения, а не context.xml - PullRequest
3 голосов
/ 26 марта 2011

У меня запущен причал с каким-то context.xml:

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
      <Set name="war">path/to/webapp</Set>
      <Set name="contextPath">/</Set>
</Configure>

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

Есть ли способ сообщить Jetty перезагрузить веб-приложение при изменении?

1 Ответ

1 голос
/ 17 июля 2011

Jasper,

Я нашел способ заставить эту работу (спасибо этот вопрос ). Если вы запустите Jetty в режиме отладки и подключите к нему отладчик Eclipse, виртуальная машина мгновенно выполнит «горячую» замену класса.

Запустите Jetty с (я использую Jetty 8 с JDK 6):

java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n -jar start.jar

, а затем создайте стандартную конфигурацию удаленной отладки в Eclipse, которая выглядит следующим образом: enter image description here

и нажмите «Отладка». Даже если вы не планируете что-либо отлаживать, подключение отладчика к удаленной виртуальной машине Jetty приведет к тому, что изменения класса будут развернуты в режиме реального времени.

Единственное, что вам следует знать, - это ограничения способности виртуальной машины оперативно менять класс. «Форма» класса не может измениться, поэтому любые новые члены класса определены или новые методы, и вам нужно будет перезагрузить веб-контекст (просто «дотроньтесь» до XML-файла контекста, и Jetty перезагрузит его).

Надеюсь, это поможет.

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