다음 코드를 사용하여 JAX-RS 클라이언트 API를 사용하여 HTTP GET을 통해 자원을 요청하려고합니다. (jersey-client v2.12 및 resteasy-client v3 .0.8 최종 구현을 테스트)JAX-RS 클라이언트 API 비동기 요청
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.InvocationCallback;
public class StackOverflowExample {
public static void main(String[] args) {
Client client = ClientBuilder.newClient();
client.target("http://example.com/").request().async().get(new InvocationCallback<String>() {
@Override
public void completed(String s) {
System.out.println("Async got: " + s);
}
@Override
public void failed(Throwable throwable) {
System.out.println("Async failure...");
}
});
}
}
예상대로 String은 거의 즉시 인쇄됩니다. 그러나 실행해야 할 코드는 없지만 프로세스는 약 1 분 정도 실행됩니다.
JAX-RS 사양은 단지 InvocationCallback
을 사용해야하며 내 문제와 관련이 없다고 말합니다. 그러나 내가 Future
을 사용하더라도 동일한 효과가 발생합니다. 나는 이것이 매우 희박하고 틀린 타임 아웃과 관련이 있는지 테스트했다. 디버거에서는 restyasy의 경우 DestroyJavaVM
및 jersey-client-async-executor-0
또는 pool-1-thread-1
이 실행중인 스레드가 있음을 보여줍니다.
여기에 무슨 문제가 있습니까?