2016-07-11 84 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(); 
}