Java 嵌入式码头,在给定时间后终止请求

Java 嵌入式码头,在给定时间后终止请求,java,jetty,embedded-jetty,Java,Jetty,Embedded Jetty,我运行一个带有嵌入式码头的罐子。有时,一个请求会陷入无休止的循环中。显然,修复无休止的循环是最好的选择。然而,这目前是不可能的 因此,我正在寻找一个选项,该选项检查请求是否存在超过(例如)5分钟,并终止相应的线程 我尝试了典型的码头选项: 最大空闲时间 soLingerTime 停止超时 他们没有一个像预期的那样工作。是否有另一个选项可以考虑? < P>你是否访问代码的代码,代码太长,无法完成?如果是这样的话,您可以使用callable和Executor自己来实现这一点,下面是一个单元测试和

我运行一个带有嵌入式码头的罐子。有时,一个请求会陷入无休止的循环中。显然,修复无休止的循环是最好的选择。然而,这目前是不可能的

因此,我正在寻找一个选项,该选项检查请求是否存在超过(例如)5分钟,并终止相应的线程

我尝试了典型的码头选项:

  • 最大空闲时间
  • soLingerTime
  • 停止超时

他们没有一个像预期的那样工作。是否有另一个选项可以考虑?

< P>你是否访问代码的代码,代码太长,无法完成?如果是这样的话,您可以使用callable和Executor自己来实现这一点,下面是一个单元测试和一个示例:

@Test
public void timerTest() throws Exception
{
  //create an executor
  ExecutorService executor = Executors.newFixedThreadPool(10);

  //some code to run
  Callable callable = () -> {
    Thread.sleep(10000); //sleep for 10 seconds
    return 123;
  };

  //run the callable code
  Future<Integer> future = (Future<Integer>) executor.submit(callable);

  Integer value = future.get(5000, TimeUnit.MILLISECONDS); //this will timeout after 5 seconds

  //kill the thread
  future.cancel(true);

}
@测试
public void timerTest()引发异常
{
//创建执行者
ExecutorService executor=Executors.newFixedThreadPool(10);
//一些要运行的代码
可调用可调用=()->{
Thread.sleep(10000);//睡眠10秒
返回123;
};
//运行可调用代码
未来=(未来)执行人提交(可调用);
整数值=future.get(5000,TimeUnit.ms);//这将在5秒后超时
//断线
future.cancel(true);
}

谢谢您的回答。利用未来是个好主意。我希望有一个码头边的解决方案。因为jetty也处理线程。