2016-07-11 112 views
1

目前這是我對傳入POST請求的實現。處理由一個子線程處理,但是響應必須返回到頂層以發送響應。REST式Web服務能否從子線程返回POST響應?

@Post("json") 
public String POSTMessage(String myJsonString) throws Exception { 
    JSONObject msg = (JSONObject) new JSONParser().parse(myJsonString); 
    ClassA Client = new ClassA(); 
    Server.client_list.add(Client); 

    return Client.processMSG(msg); 
} 

ClassA Processing構建JSON響應並將其返回到頂層。 Child Thread可以通過Restful架構將響應發送回去嗎?換句話說,POSTmessage函數是否需要返回值,或者有什麼方法可以讓Child Thread響應,因爲POSTMessage可以返回到偵聽端口。

回答

0

您可以使用asynchronous response,如:

@Post("json") 
public void POSTMessage(String myJsonString, @Suspended final AsyncResponse asyncResponse) throws Exception { 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      JSONObject msg = (JSONObject) new JSONParser().parse(myJsonString); 
      ClassA client = new ClassA();     
      asyncResponse.resume(client.processMSG(msg)); 
     } 
    }).start(); 
}