0
环境:ContinuationListener似乎并不被Jetty的ProxyServlet的终止的过滤器链的工作,从8.x的升级后,码头到9.x
- 在我的环境,Kibana 4.5.2运行背后通过扩展Jetty的“ProxyServlet”类创建的“反向代理servlet”。
- 这样做是为了使用URL https://Jetty_Server_IP:8443/visual-analytics/proxy/ ...可以访问Kibana网页界面。该URL的请求被在Jetty服务器中运行的反向代理拦截,并被重定向到https://localhost:5601/ ...即,到Kibana服务器与Jetty服务器在同一台机器上运行。
- Kibana服务器然后处理由Jetty服务器转发的请求并将响应返回给Web浏览器。
- 注意: Jetty在我的应用程序中以“嵌入模式”运行。
问题:
“反向代理servlet” 被映射到URL “/视觉分析/代理/ *”。
还有一个映射到URL“/visual-analytics/proxy/elasticsearch/.kibana/search/*”的“过滤器”,其中正在使用“ContinuationListener”,如以下代码片断所示:
ContinuationSupport.getContinuation(myRequestWrapper).addContinuationListener(new ContinuationListener() {
@Override
public void onTimeout(Continuation continuation) {
logger.log(Level.WARNING, "Request timeout...");
}
@Override
public void onComplete(Continuation continuation) {
HttpServletResponse httpResponse = (HttpServletResponse)continuation.getServletResponse();
if (httpResponse.getStatus() == HttpServletResponse.SC_OK || httpResponse.getStatus() == HttpServletResponse.SC_CREATED) {
//some business logic
}
}
});
chain.doFilter(myRequestWrapper, response);
以上ContinuationListener工作正常与码头版本8.1.15.v20140411与收听者的onComplete()方法被调用。但是在将Jetty版本升级到9.3.14.v20161028后,ContinuationListener不再工作,即既没有调用监听器的onComplete()方法也没有调用onTimeout()方法。
任何可能出错的指针或如何进一步调试此问题将不胜感激。期待任何回应...