2016-11-08 10 views
0

JavaのdoPostメソッドが終了する前にHTTPステータスコードを取得したいと考えています。たとえば、Pythonではself.send_response(200)がありますが、これは非同期でステータスを送信しますか?HTTPステータスコードを非同期で取得する

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse 
* response) 
* 
*/ 
@SuppressWarnings("unchecked") 
@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    //Final result object 


    //I want to send a http status code 200 before the task running 

    myThreadPool = Executors.newFixedThreadPool(2); 
    Future taskOne = myThreadPool.submit(new Runnable() { 
     @Override 
     public void run() { 
      try { 
       try { 
        // My first task 
       } catch (ServletException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

    }); 

    // Task two 
    . 
    . 
+1

でした:https://blogs.oracle.com/enterprisetechtips/entry/asynchronous_support_in_servlet_3

私が前提とするもの、提供しているように見えるとしても良い例がありますが、あなたが達成したいと思います:ここでは例で説明したようにそれは、非同期サーブレットを参照してください

これまでのところあなたのコードを表示し、使用しているフレームワークを教えてください。 – Erik

+0

あなたの質問は本当に不明です。 intを非同期に取得したいですか? http://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServletResponse.html#getStatus-- – Taylor

+0

こんにちは@Taylor、私のAPIが非同期で動作するようにしたいので、まず、私は私の要求を送ると、サーバーはhttpコード200で応答し、バックグラウンドで私のdoPostの実行を継続し、すべてのタスクが終了した後、応答を送信します。 – user3773203

答えて

0

私はあなたが投稿コードの意図が何であるか全くわからないんだけど、あなたは、要求が終了する前に、クライアントにいくつかのデータを送信できるように、私は、あなたが非同期処理のいくつかの種類を望んでいることを推測することができますか?

@WebServlet("/foo" asyncSupported=true) 
    public class MyServlet extends HttpServlet { 
     public void doGet(HttpServletRequest req, HttpServletResponse res) { 
      ... 
      AsyncContext aCtx = request.startAsync(req, res); 
      ScheduledThreadPoolExecutor executor = new ThreadPoolExecutor(10); 
      executor.execute(new AsyncWebService(aCtx)); 
     } 
    } 

    public class AsyncWebService implements Runnable { 
     AsyncContext ctx; 
     public AsyncWebService(AsyncContext ctx) { 
      this.ctx = ctx; 
     } 
     public void run() { 
      // Invoke web service and save result in request attribute 
      // Dispatch the request to render the result to a JSP. 
      ctx.dispatch("/render.jsp"); 
    } 
} 
+0

ありがとうございました!できます 。 – user3773203

関連する問題