2
我有一個Jetty嵌入式服務器啓動。添加/刪除webapp到嵌入式Jetty
我希望能夠做一個web應用程序的熱部署,並能夠以編程方式再次卸載它。
一旦服務器啓動,任何向它添加處理程序的嘗試都會引發錯誤。
我嘗試使用ContextHandlerCollection,然後使用.addContext()來啓動它並運行,但不知道如果這是正確的方式去解決它。
有人可以請指出我在正確的方向嗎?謝謝
我有一個Jetty嵌入式服務器啓動。添加/刪除webapp到嵌入式Jetty
我希望能夠做一個web應用程序的熱部署,並能夠以編程方式再次卸載它。
一旦服務器啓動,任何向它添加處理程序的嘗試都會引發錯誤。
我嘗試使用ContextHandlerCollection,然後使用.addContext()來啓動它並運行,但不知道如果這是正確的方式去解決它。
有人可以請指出我在正確的方向嗎?謝謝
這個熱插拔適用於我(Jetty 7) - 此代碼特定於交換啓動時定義的Web Apps,並通過現有處理程序進行循環。要動態添加新的Web App,您只需添加一些找到的標誌邏輯即可。 HTH。
public void updateWar(String contextPath, String warPath)
{
Handler[] hs = handlers.getHandlers();
for(int i = 0; i < hs.length; i++)
{
Handler h = hs[i];
if(h != null)
{
if(h instanceof WebAppContext)
{
WebAppContext wac = (WebAppContext)h;
String wacwar = wac.getWar();
if(wacwar.equals(warPath))
{
try
{
handlers.stop();
wac.stop();
wac.destroy();
handlers.removeHandler(wac);
wac = new WebAppContext();
wac.setContextPath(contextPath);
wac.setWar(warPath);
handlers.addHandler(wac);
handlers.start();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
}
}
歡迎來到Stackoverflow。不要忘記抽空瀏覽FAQ的所有章節。它可以幫助你培養你的Stackoverflow體驗,你將獲得徽章作爲獎勵;-) – menjaraz
順便說一句,還有一個新的WebAppProvider似乎可以管理熱插拔,但我還沒有得到這個工作。 http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/deploy/providers/WebAppProvider.html – user981