【发布时间】:2017-02-21 18:13:04
【问题描述】:
环境:
- 在我的环境中,Kibana 4.5.2 在通过扩展 Jetty 的“ProxyServlet”类创建的“反向代理 servlet”后面运行。
- 这样做是为了可以使用 URL https://Jetty_Server_IP:8443/visual-analytics/proxy/... 访问 Kibana Web 界面。对此 URL 的请求被 Jetty 服务器中运行的反向代理拦截并重定向到 https://localhost:5601/... 即,到与 Jetty 服务器在同一台机器上运行的 Kibana 服务器。
- Kibana 服务器然后处理 Jetty 服务器转发的请求并将响应返回给 Web 浏览器。
- 注意: Jetty 在我的应用程序中以“嵌入式模式”运行。
问题:
“反向代理 servlet”映射到 URL“/visual-analytics/proxy/*”。
还有另一个“过滤器”映射到 URL“/visual-analytics/proxy/elasticsearch/.kibana/search/*”,其中正在使用“ContinuationListener”,如以下代码 sn-p 所示:
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 在 Jetty 版本 8.1.15.v20140411 上运行良好,并且正在调用侦听器的 onComplete() 方法。但是在将 Jetty 版本升级到 9.3.14.v20161028 后,ContinuationListener 不再工作,即,监听器的 onComplete() 方法和 onTimeout() 方法都没有被调用。
任何关于可能出错的地方或如何进一步调试此问题的指针将不胜感激。期待任何回应...
【问题讨论】:
标签: java reverse-proxy servlet-filters embedded-jetty jetty-9