웹에서 많은 연구가 이루어졌지만 문제의 해결책을 찾을 수 없습니다. GUI에서 서비스를 호출하고 싶습니다. 서비스 (Rest 메서드)는 스레드와 함께 비동기 처리를 시작합니다. 서비스가 GUI에 즉시 응답하여 GUI가 차단되지 않도록하고 싶습니다. 스레드의 끝에서 서비스는 치료가 완료되었다는 GUI를 나타내는 두 번째 응답을 제공해야합니다.재사용으로 비동기 응답을 가져올 수 없습니다.
내가 원하는 것은 Reasteasy의 비동기 HTTP 부분에 해당하는 것 같습니다. 그래서,이 코드 (난 단지 중요한 내 문제에 대한 부품하자) 시도했다 :
이<servlet>
<servlet-name>resteasy-servlet</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServlet30Dispatcher
</servlet-class>
<async-supported>true</async-supported>
</servlet>
문제가 내 web.xml에
@PUT
@Path("/duplicate/1")
public void duplicate( UcModel uc,
final @Suspend(TIMEOUT_ASYNCHRONOUS_DUPLICATION) AsynchronousResponse response) throws BusinessException {
Thread t = new Thread() {
@Override
public void run() {
try {
Thread.sleep(40000);
} catch (InterruptedException e) {
}
Response jaxrs = Response.ok(result).build();
response.setResponse(jaxrs);
}
};
t.start();
}
}
을,이 코드를 넣었습니다 : 웹 서비스가 즉시 응답하지 않습니다. 스레드의 끝에서만 응답을 보내고 GUI는 차단됩니다. 코드를 살펴보면 서비스가 즉시 "무효"응답으로 응답을 제공 할 수있는 방법을 이해하지 못합니다.
정보 : 웹 서비스 호출은 Javascript 프레임 워크 인 ExtJS에서 이루어집니다. Ajax 요청을한다.
누군가가이 문제로 나를 도울 수 있다면 좋을 것입니다. 미리 감사드립니다.
세드릭
가 답장을 보내 주셔서 감사합니다. 불행히도, 나는 오늘이 프로젝트를 끝내기 때문에이 솔루션을 시도 할 충분한 시간이 없다. 그래서, 내 해결 방법은 완전히 내 메서드의 비동기 부분을 제거하고 클라이언트가 처리 요청에 의해 차단되지 않도록하는 것입니다. 내 동료에게 회신 해 주겠다. 언젠가는 누군가가 언젠가 그것을보고 혜성 해법을 시도해야 할 것이다. – user2622053
그래, 행운을 빈다. 대답이 도움이된다면 투표하는 것을 잊지 마라. –
나는 시험해 보았다. 투표 할 수는 있지만이 포럼의 초보자이므로 투표에 대한 명성이 충분하지 않습니다. – user2622053