2013-10-26 4 views
1

Я установил контекст Jetty с помощью context.xml для использования виртуальных хостов. Таким образом, моя структура каталогов выглядит так:Нет горячего развертывания в Jetty 9.0.6

webapps 
--mycontext.xml 
--mycontext.war 

Теперь, когда я загружаю новую войну, никакого горячего развертывания не происходит. Это происходит только при изменении mycontext.xml. Это было не так, когда я работал без mycontext.xml.

Вот содержание mycontext.xml

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd"> 

<Configure class="org.eclipse.jetty.webapp.WebAppContext"> 

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 
<!-- Required minimal context configuration :      --> 
<!-- + contextPath             --> 
<!-- + war OR resourceBase           --> 
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 
<Set name="contextPath">/</Set> 
<Set name="war"><Property name="jetty.webapps" default="."/>/mycontext.war</Set> 

<Set name="virtualHosts"> 
    <Array type="String"> 
    <Item>example.com</Item> 
     <Item>www.example.com</Item> 
     <Item>localhost</Item> 
    <Item>127.0.0.1</Item> 
    </Array> 
</Set> 
</Configure> 

Любые идеи, как я восстановить горячее развертывание, обновление войны файл?

+0

Это похоже на ошибку. Я подал вам эту проблему по адресу https://bugs.eclipse.org/420944 –

+0

Спасибо. Я действительно ценю вашу работу. –

ответ

0

Вам нужно поместить свой mycontext.xml в каталог контекстов вашего сервера. Также вам, вероятно, нужно включить горячее развертывание в etc/jetty-deploy.xml для файлов войны в каталоге webapps, как указано here. Как вы можете видеть, что конфигурация позволяет горячее развертывание

...... 
<Set name="monitoredDirName"><Property name="jetty.home" default="." />/webapps</Set> 
..... 

Ниже приведена конфигурация, которая работает для меня

jetty.home/contextx/mycontext.xml

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd"> 

<Configure class="org.eclipse.jetty.webapp.WebAppContext"> 

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 
<!-- Required minimal context configuration :      --> 
<!-- + contextPath             --> 
<!-- + war OR resourceBase           --> 
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 
<Set name="contextPath">/mycontext</Set> 
<Set name="war"><SystemProperty name="jetty.home"/>/webapps/mycontext.war</Set> 

<Set name="virtualHosts"> 
    <Array type="String"> 
    <Item>example.com</Item> 
     <Item>www.example.com</Item> 
     <Item>localhost</Item> 
    <Item>127.0.0.1</Item> 
    </Array> 
</Set> 
</Configure> 

Пожалуйста, обратите внимание, как я предоставили название и местонахождение военного названия

<Set name="war"><SystemProperty name="jetty.home"/>/webapps/mycontext.war</Set> 

jetty.home/etc/jetty-deplo y.xml

<?xml version="1.0"?> 
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> 

<!-- =============================================================== --> 
<!-- Create the deployment manager         --> 
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 
<!-- The deplyment manager handles the lifecycle of deploying web --> 
<!-- applications. Apps are provided by instances of the    --> 
<!-- AppProvider interface. Typically these are provided by   --> 
<!-- one or more of:             --> 
<!-- jetty-webapps.xml  - monitors webapps for wars and dirs --> 
<!-- jetty-contexts.xml  - monitors contexts for context xml --> 
<!-- jetty-templates.xml  - monitors contexts and templates  --> 
<!-- =============================================================== --> 
<Configure id="Server" class="org.eclipse.jetty.server.Server"> 

    <Call name="addBean"> 
     <Arg> 
     <New id="DeploymentManager" class="org.eclipse.jetty.deploy.DeploymentManager"> 
      <Set name="contexts"> 
      <Ref id="Contexts" /> 
      </Set> 
      <Call name="setContextAttribute"> 
      <Arg>org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern</Arg> 
      <Arg>.*/servlet-api-[^/]*\.jar$</Arg> 
      </Call> 


      <Call id="webappprovider" name="addAppProvider"> 
      <Arg> 
      <New class="org.eclipse.jetty.deploy.providers.WebAppProvider"> 
       <Set name="monitoredDirName"><Property name="jetty.home" default="." />/webapps</Set> 
       <Set name="defaultsDescriptor"><Property name="jetty.home" default="." />/etc/webdefault.xml</Set> 
       <Set name="scanInterval">1</Set> 
       <Set name="extractWars">true</Set> 
      </New> 
      </Arg> 
     </Call> 

     </New> 
     </Arg> 
    </Call> 
</Configure> 

При такой конфигурации, когда я поставил модифицированную mycontext.war в WebApps, молы счастливо повторно развертывает войну.

+0

Не работает для меня. Насколько я вижу, единственная разница в моей конфигурации - это то, как вы предоставляете военный путь. Я пробовал это, но jetty.home/webapps и jetty.webapps должны быть равны. Мое обходное решение - коснуться mycontext.xml во время автоматического процесса распространения. Этого достаточно. –

Смежные вопросы