添加/删除Web应用程序到嵌入式Jetty

时间:2011-10-26 21:23:13

标签: embedded-jetty

我启动了Jetty嵌入式服务器。

我希望能够以编程方式对webapp进行热部署,并能够再次卸载它。

启动服务器后,任何向其添加处理程序的尝试都会引发错误。

我尝试使用ContextHandlerCollection,然后使用.addContext()来启动并运行它,但不确定这是否是正确的方法。

有人可以指出我正确的方向吗?谢谢

1 个答案:

答案 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();
                }
            }
        }
    }
}
}