2016-11-08 2 views
0

Java에서 doPost 메서드가 끝나기 전에 HTTP 상태 코드를 가져오고 싶습니다. 예를 들어 파이썬에서 비동기 방식으로 상태를 보내는 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

안녕하세요 @ 테일러, 비동기 방식으로 작동하도록 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

Thankss !! 그것은 작동합니다. – user3773203

관련 문제