2016-07-11 1 views
1

현재 들어오는 POST 요청에 대한 구현입니다. 처리는 하위 스레드에서 처리되지만 응답을 보내려면 응답을 최상위 수준으로 되돌려 보내야합니다.RESTful 웹 서비스가 하위 스레드로부터 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 응답을 작성하고이를 최상위 수준으로 반환합니다. 자식 스레드가 Restful 아키텍처에서 응답을 다시 보낼 수있는 방법이 있습니까? 즉, POSTmessage 함수는 값을 반환해야하거나 POSTMessage가 포트에서 수신 대기로 돌아갈 수 있으므로 Child Thread가 응답 할 수있는 방법이 있습니다.

답변

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(); 
}