提问人:Eric 提问时间:10/12/2023 最后编辑:BalusCEric 更新时间:10/12/2023 访问量:25
长时间运行的 http 请求的服务器端请求超时 - Java Servlet
Server Side Request Timeout for long running http requests - Java Servlet
问:
使用以下示例 servlet,它模拟了一些正在完成的工作,有些请求将在大约 10 秒内完成,而另一些请求将在 60 秒左右完成。客户端已请求我们“超时”任何运行时间超过 30 秒的请求。不希望使用此超时设置修改应用程序代码,因为此超时请求特定于应用程序的一个实例和一个客户端。
这是应该在 Application Server 作用域还是 HTTP Server 作用域中完成的操作?
该应用程序部署在 WebSphere 9 和 TomEE+ 8 中。我们使用的是 Apache HTTP Server 2.4.x。
完成此“超时”的最佳方法是什么?结果是 408、504 还是其他什么?提前致谢。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
long startTime = System.currentTimeMillis();
try {
Random r = new Random();
if(r.nextBoolean()) {
//simulate long running task
Thread.sleep(60 *1000);
}else {
//simulate normal task
Thread.sleep(10 * 1000);
}
}catch(InterruptedException e) {
System.err.println(this.getClass().getSimpleName() + " Interrupted " + e);
}
long endTime = System.currentTimeMillis();
response.setStatus(200);
response.setContentType("text/plain");
response.getWriter().write("Work completed in " + (endTime-startTime) + " milliseconds");
response.getWriter().flush();
response.getWriter().close();
}
答: 暂无答案
评论