私はWebサービス開発の初心者です。Spring 3を使用してJavaでREST Webアプリケーションを構築しています。
使用している Web サービスには、非同期ログイン メソッドがあります。サービスが応答をポストバックするコールバック リスナーの 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;
}
}
さらに情報が必要な場合はお知らせください。ありがとう