Как настроить Jetty для перезагрузки WebAppContext при изменении классов - PullRequest
2 голосов
/ 19 марта 2012

Я занимаюсь разработкой веб-приложения и запускаю Jetty в качестве среды разработки и тестирования при разработке под Eclipse.

При внесении изменений в классы Java Eclipse автоматически компилирует их в каталог сборки, ноПристань не увидит изменений, пока я не остановлюсь и не начну сервер.Я знаю, что Jetty поддерживает «горячее развертывание» с использованием ContextDeployer, который обновляет обновленные контексты приложения, но оно опирается на файл контекста в обновляемой директории контекста, что не очень полезно в моем случае.способ настроить Jetty так, чтобы он обновлял веб-приложение при обновлении любого из используемых им классов?

Мой текущий файл jetty.xml выглядит примерно так:

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
    <Configure id="Server" class="org.eclipse.jetty.server.Server">
        <Set name="ThreadPool"><!-- bla bla --></Set>
        <Call name="addConnector"><!-- bla bla --></Call>
        <Set name="handler">
          <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
            <Set name="handlers">
             <Array type="org.eclipse.jetty.server.Handler">
               <Item>
                 <New id="webapp" class="org.eclipse.jetty.webapp.WebAppContext">
                   <Set name="displayName">My Web App</Set>
                   <Set name="resourceBase">src/main/webapp</Set>
                   <Set name="descriptor">src/main/webapp/WEB-INF/web.xml</Set>
                   <Set name="contextPath">/mywebapp</Set>
                 </New>
               </Item>
               <Item>
                 <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
               </Item>
             </Array>
            </Set>
          </New>
        </Set>
    </Configure>

Ответы [ 2 ]

3 голосов
/ 19 марта 2012

Мы не нашли способ сделать это (кроме реализации нашей собственной версии org.eclipse.jetty.deploy.providers.WebAppProvider).

Мы настроили Jetty для горячего развертывания веб-приложений из папки webapps (свойство monitoredDirName изthe WebappDeployer).

Затем для горячего развертывания я воссоздаю свою ссылку в этой папке в папку src / main / webapp моего проекта Eclipse.Связанный должен иметь суффикс .war.

Не совсем автоматически, но достаточно хорошо и избегает перезапуска Jetty.

Если вы пойдете по пути повторной реализации WebappDeployer, я не буду отслеживатьизменения в файлах .class - они слишком сильно меняются при компиляции Eclipse, особенно в случае автоматической сборки.Я бы реализовал решение, похожее на Tomcat, отслеживая изменения в файле web.xml.Затем фиктивное изменение, сохраненное в этом файле из Eclipse, приведет к повторному развертыванию.

0 голосов
/ 30 июня 2014

Также возможно настроить приложение для Jetty на Maven и запускать периодические сборки с Jenkins (даже каждые пару секунд, в зависимости от машины, с которой вы работаете)

...