我在Jetty服务器上有一个Web应用程序,它使用外部服务(从另一台服务器加载数据,连接到外部套接字以接收数据等)和websockets,以便向客户端传递事件和其他数据。我需要的是从一个生产版本切换到另一个生产版本(假设我的应用程序具有FirstApp.xml上下文配置文件和2个战争:AppVer1.war和AppVer2.war)没有停机时间(甚至1秒),并且没有关闭套接字连接和客户端的websockets。这对码头有可能吗?
OB的。从其他服务器加载数据并在servlet类中创建套接字连接,所以我应该使用其他类型的组件吗?
编辑:我正在使用Jetty 9.3.5
答案 0 :(得分:0)
一旦请求进入,就会发生HttpServletRequest并路由到特定的ServletContext(WebApp)。
对于普通的HTTP请求以及升级的WebSocket请求都是如此。
在活动请求期间无法替换webapp(可能对所有Servlet容器都是如此)。 AppVer1的ServletContext必须经历其生命周期并销毁其所有过滤器/ servlet等等,使ServletContext对请求无效,从而关闭活动请求。
也许您应该更改WebApp架构,以便在前面有一个处理请求和请求路由的简单外观,但应用程序逻辑的核心是在其他地方完成的,而不是WebApp的一部分。这可以让你获得你正在寻找的控制。