服务器端如何处理请求超时

莫看烟雨 2014-07-01 08:03:44
比如说一个请求到了我的服务器,30秒还没执行完,这时候我想中断执行给用户返回超时页面,如何实现?
是通过tomcat配置还是通过代码实现?
...全文
2279 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
luolongdragon 2014-07-02
  • 打赏
  • 举报
回复
网上找下openSessionInView,看下你就明白了..我是觉得同样利用这个原理,就能处理超时
luolongdragon 2014-07-01
  • 打赏
  • 举报
回复
写个filter就行.
莫看烟雨 2014-07-01
  • 打赏
  • 举报
回复
引用 7 楼 maihao110 的回复:
这种应该在客户端处理,使用ajax请求,设置超时时间,过时跳转。 非要在web服务器处理,不管是tomcat还是nginx都不能实现你的要求。 还有一种比较扯淡的做法,你在拦截器里把请求转给httpclient处理,它可以设置超时时间,超时再跳转,但我相信兄弟 你不会这么做的吧!
我也是这么觉得,需求这么写的,也是没办法啊
  • 打赏
  • 举报
回复
这种应该在客户端处理,使用ajax请求,设置超时时间,过时跳转。 非要在web服务器处理,不管是tomcat还是nginx都不能实现你的要求。 还有一种比较扯淡的做法,你在拦截器里把请求转给httpclient处理,它可以设置超时时间,超时再跳转,但我相信兄弟 你不会这么做的吧!
莫看烟雨 2014-07-01
  • 打赏
  • 举报
回复
这个异常是tomcat检测到超时后自己抛出专门记录日志的,没什么实际作用啊。。。。。
莫看烟雨 2014-07-01
  • 打赏
  • 举报
回复
引用 3 楼 defonds 的回复:
[quote=引用 2 楼 li272355201 的回复:] [quote=引用 1 楼 defonds 的回复:] 是 tomcat7 吗?可以这样试试:
<Context ...>
  ...
  <Valve 
    className="org.apache.catalina.valves.StuckThreadDetectionValve"
    threshold="60" />
  ...
</Context>
中断执行后怎么跳转到指定页面呢[/quote]会有超时异常抛出。 你捕捉到这个异常,让它跳转。[/quote] 加入了一个一万次的for循环,每次执行完毕睡眠两秒,catch的异常是throwable,catch后跳转到指定页面,异常日志打印出来了,但是for循环还是在执行,而且页面也没有跳转。
莫看烟雨 2014-07-01
  • 打赏
  • 举报
回复
引用 1 楼 defonds 的回复:
是 tomcat7 吗?可以这样试试:
<Context ...>
  ...
  <Valve 
    className="org.apache.catalina.valves.StuckThreadDetectionValve"
    threshold="60" />
  ...
</Context>
这样不可以啊,sleep了1000秒,客户端还是一直在等待
Defonds 2014-07-01
  • 打赏
  • 举报
回复
引用 2 楼 li272355201 的回复:
[quote=引用 1 楼 defonds 的回复:] 是 tomcat7 吗?可以这样试试:
<Context ...>
  ...
  <Valve 
    className="org.apache.catalina.valves.StuckThreadDetectionValve"
    threshold="60" />
  ...
</Context>
中断执行后怎么跳转到指定页面呢[/quote]会有超时异常抛出。 你捕捉到这个异常,让它跳转。
莫看烟雨 2014-07-01
  • 打赏
  • 举报
回复
引用 1 楼 defonds 的回复:
是 tomcat7 吗?可以这样试试:
<Context ...>
  ...
  <Valve 
    className="org.apache.catalina.valves.StuckThreadDetectionValve"
    threshold="60" />
  ...
</Context>
中断执行后怎么跳转到指定页面呢
Defonds 2014-07-01
  • 打赏
  • 举报
回复
是 tomcat7 吗?可以这样试试:
<Context ...>
  ...
  <Valve 
    className="org.apache.catalina.valves.StuckThreadDetectionValve"
    threshold="60" />
  ...
</Context>
莫看烟雨 2014-07-01
  • 打赏
  • 举报
回复
引用 11 楼 z_yes163 的回复:
aop 拦截 加入定时器1秒执行一次,调用方法时间。和当前时间如果超过一定时间直接return 到自己的页面。
求例子
z_yes163 2014-07-01
  • 打赏
  • 举报
回复
aop 拦截 加入定时器1秒执行一次,调用方法时间。和当前时间如果超过一定时间直接return 到自己的页面。
莫看烟雨 2014-07-01
  • 打赏
  • 举报
回复
引用 9 楼 luolongdragon 的回复:
写个filter就行.
不懂。。。

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧