我启动了Jetty嵌入式服务器。
我希望能够以编程方式对webapp进行热部署,并能够再次卸载它。
启动服务器后,任何向其添加处理程序的尝试都会引发错误。
我尝试使用ContextHandlerCollection,然后使用.addContext()来启动并运行它,但不确定这是否是正确的方法。
有人可以指出我正确的方向吗?谢谢
答案 0 :(得分:2)
这个热交换适用于我(Jetty 7) - 此代码专门用于交换启动时定义的Web应用程序并通过现有处理程序循环。要动态添加新的Web应用程序,您只需添加一些找到的标志逻辑。 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();
}
}
}
}
}
}