儘管在Web上進行了許多研究,但我找不到任何解決方案。 我想從GUI調用服務。服務(Rest方法)通過線程啓動異步處理。我希望服務立即給GUI一個響應,以便GUI不被阻塞。在線程結束時,服務應該給出第二個響應,指示完成處理的GUI。無法通過reasteasy獲得異步響應
我想要做的事似乎對應於Reasteasy的異步HTTP部分。所以,我已經試過這個代碼(我只讓我的問題的重要組成部分):
@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();
}
}
在我的web.xml,我已經把這個代碼:
<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服務不會立即給出響應。它僅在線程結束時給出響應,並且GUI被阻止。 通過查看代碼,我甚至不明白服務如何立即給出一個「無效」結果的響應。
有關信息:Web服務的調用是在JavaScript框架ExtJS中進行的。它執行一個Ajax請求。
如果有人能幫助我解決這個問題,那將會很棒。在此先感謝
Cedric
謝謝您的答覆。不幸的是,我沒有足夠的時間來嘗試這個解決方案,因爲我今天離開了我的項目。所以,我的解決方法是完全刪除我的方法的異步部分,並確保客戶端不會被處理請求阻止。我給你的回覆給我的同事,也許有人會有一段時間來看看它,並嘗試彗星解決方案 – user2622053
好吧,祝你好運,請不要忘記投票,如果答案對你有用 –
我試過了投票,但我是這個論壇的初學者,所以我沒有足夠的投票聲望 – user2622053