在不阻止其他HTTP请求的情况下等待方法响应的进程



我有一个HTTP GET方法的代码:

@Override
public Cert get(Representation entity) {
// ...
Cert cert = ct.fetchCertificate(Arrays.asList(domains));
return cert; 
}

它是一个证书生成器,用于将序列化的Cert对象返回到客户端。

fetchCertificate方法中有一个Thread.sleep方法,它会导致整个servlet/web应用程序停止,直到该方法返回,导致整个web应用程序无法响应额外的HTTP请求:

// Poll for the challenge to complete.
try {
int attempts = 20;
while (challenge.getStatus() != Status.VALID && attempts-- > 0) {
LOG.info("CHALLENGE ATTEMPTS: " + attempts);
// Did the authorization fail?
if (challenge.getStatus() == Status.INVALID) {
throw new AcmeException("Challenge failed... Giving up.");
}
// Wait for a few seconds
Thread.sleep(5000L);
// Then update the status
challenge.update();
}
} catch(Exception e) { 
// ... 
}

RxJava术语中,在不阻塞应用程序的情况下,实现相同功能的最佳方式是什么。

您需要将这个Whole HTTP请求调用和睡眠放在辅助线程中。它似乎挡住了主线。

相关内容

  • 没有找到相关文章

最新更新