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

发布于 2024-12-12 12:30:29 字数 221 浏览 0 评论 0原文

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

我希望能够对 Web 应用程序进行热部署,并能够再次卸载它,所有这些都以编程方式进行。

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

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

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

I have a Jetty embedded server started up.

I wish to be able to do a hot deploy of a webapp and be able to unload it again, all programmatically.

Once the server is started, any attempts to add a handler to it throws an error.

I tried using ContextHandlerCollection and then using .addContext() to get it up and running but not sure if that is the right way to go about it.

Can someone please point me in the right direction? thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

向日葵 2024-12-19 12:30:29

这个热交换适用于我(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();
                }
            }
        }
    }
}
}

This hotswap works for me (Jetty 7) - this code is specific for swapping Web Apps defined at startup and loops through the existing handlers. To add a new Web App dynamically, you would just have to add some found flag logic. 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();
                }
            }
        }
    }
}
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文