我是Web服務開發人員的初學者。 我們正在使用Spring 3在Java中構建REST Web應用程序。將異步Web服務調用爲Java中的同步
我們正在使用的Web服務具有異步登錄方法。我們爲他們提供了一個回調監聽器URL,在這些URL中他們的服務回發響應。
因此,當我們發送登錄請求時,我們收到一個空白答覆作爲確認。並且服務在偵聽器URL上發送實際數據的響應。
請幫助,我應該如何設計/實現調用登錄服務作爲同步調用? 謝謝。
編輯: 下面是回發信息的偵聽器/控制器,它提取令牌並設置爲一個對象。
@Controller
public class PostbackController {
@Autowried
public LoginResponse loginRS;
@RequestMapping(value = "/callbacklistener", method = RequestMethod.POST)
@ResponseBody
public String postbackHandler(@RequestParam("postback") String requestMessage) {
//We extract the token value from requestMessage.
String token = requestMessage;
loginRS.setToken(token);
return "<Confirm/>";
}
}
以下是調用登錄服務的線程,並等待10秒。每2秒檢查一次物體的狀態。
public class LoginService extends Thread {
@Autowried
public LoginResponse loginRS;
public LoginService() {
this.start();
}
@Override
public void run() {
try {
System.out.println("Thread Start.");
this.login();
System.out.println("Thread Complete.");
} catch (InterruptedException e) {}
}
public LoginResponse login() {
String loginXML = "";
String response = "";//by calling REST web service using RESTtemplate we get blank response.
for(i=0; i < 6; i++) {
if(loginRS.getToken().length > 0)) {
//Got the response exit from thread
break;
}
else {
//Wait for 2 second
Thread.sleep(2000)
}
}
return loginRS;
}
}
如果您需要更多信息,請讓我知道。由於
哦相同的實例。雖然我不知道這是否直接違反了REST的「規則」,但它肯定違反了原則的精神。 (它還要求客戶端在某個地方託管Web服務,這只是令人討厭的。) –