我正在開發Web應用程序,並在Eclipse下開發時將Jetty作爲開發和測試環境運行。如何配置Jetty以在更改類時重新加載WebAppContext
當我對Java類進行更改時,Eclipse會自動將它們編譯到生成目錄,但在停止並啓動服務器之前,Jetty將不會看到更改。我知道Jetty支持使用ContextDeployer進行「熱部署」,它將刷新更新的應用程序上下文,但它依賴於更新上下文目錄中的上下文文件 - 這對我來說不是很有用。
有沒有一種方法來設置Jetty,以便在它使用的任何類更新時重新加載Web應用程序?
我目前的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>
我已經成功地使用了類似的解決方案,而爲Jetty開發插件:我使用ContextProvider(http://wiki.eclipse.org/Jetty/Feature/ContextDeployer)和context.xml文件來設置webapp。在上下文文件中設置應用程序類的位置非常重要(使用''),而不是在Eclipse啓動配置中。然後,我在項目配置中添加了一個Ant構建器,在自動構建時使用'touch'任務來更新context.xml並導致上下文重新部署。 –
Guss
2012-03-19 10:34:11
在這種使用場景中,針對上下文部署者的+1# – 2012-03-19 13:46:02
@jesse操縱context.xml文件的問題在於他們不在戰爭之中。這使得構建和部署變得複雜 – 2012-03-19 13:58:34