我是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;
}
}
如果您需要更多信息,请告诉我。谢谢