gpt4 book ai didi

java - 通过 Jersey 服务器中的超时对 Java 方法实现 QoS 指标

转载 作者:太空宇宙 更新时间:2023-11-04 07:30:45 24 4
gpt4 key购买 nike

在完美的世界中,我想象有一个像 @QoS(10, CONSTANT_RETURN_OBJECT) 这样的注释,可以放置在 java 方法周围,如果它们执行的时间超过指定时间(本例中为 10 秒),那么方法执行本质上被认为超时,我们返回一个由开发人员定义的预打包 CONSTANT_RETURN_OBJECT 以指示空结果。

但实际上,在我们说它太长并且返回并继续我们的快乐之路之前,支持或推荐强制 Jersey 服务器方法可以运行多长时间的好方法是什么?

并且它是给定的(对于我在这里的问题),您无法控制调用 jersey-server 的客户端,因此您不能在那里设置超时......这就是为什么您在服务器端强制执行一些合理的超时。

更新:

我想我在某种程度上要问的是是否有一个注释本质上会将方法调用包装为执行器驱动的任务并在超时情况下运行它?有点像这两篇文章的答案中编写的代码的作用:

最佳答案

实现这一点的方法是实现一个 servlet 过滤器。基本过滤器如下所示:

public class TimeoutFilter implements Filter {

@Override
public void doFilter(final ServletRequest servletRequest,
final ServletResponse servletResponse,
final FilterChain chain) throws IOException, ServletException {
final HttpServletRequest req = (HttpServletRequest)servletRequest;

try {
// Execute this with a time limit
chain.doFilter(servletRequest, servletResponse);
}
catch (Exception e) {
// Handle exceptions here; you should state the exceptions explicitly
// rather than just catching Exception
}
}
}

然后,您可以在过滤器中设置执行器或其他任何内容来为请求提供时间限制。

关于java - 通过 Jersey 服务器中的超时对 Java 方法实现 QoS 指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17750032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com