Java 码头7延续

Java 码头7延续,java,jetty,continuations,Java,Jetty,Continuations,我使用的是jetty-7.4.1.v20110513和servlet-api-2.5 我尝试在下面的servlet中使用continion import java.io.*; import java.util.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax

我使用的是jetty-7.4.1.v20110513和servlet-api-2.5

我尝试在下面的servlet中使用continion

 import java.io.*;
 import java.util.*;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;

 import org.eclipse.jetty.continuation.*;



public class cs extends HttpServlet {

public void service(HttpServletRequest req, HttpServletResponse res)
throws java.io.IOException {

String reqId = req.getParameter("id");

Continuation cc = ContinuationSupport.getContinuation(req);

res.setContentType("text/plain");
res.getWriter().println("Request: "+reqId+"\tstart:\t"+new Date());
res.getWriter().flush();

cc.setTimeout(2000);
cc.suspend();

res.getWriter().println("Request: "+reqId+"\tend:\t"+new Date());
cc.complete();
}
}
我预计会有2秒的延迟,但当我从浏览器运行servlet时,我会毫不延迟地得到如下输出:

Request: null   start:  Sat May 21 15:25:02 IST 2011
Request: null   end:    Sat May 21 15:25:02 IST 2011

我想你正在读这个。可通过以下方式之一实现2秒延迟:

  • 在第二个
    res.getWriter().println()之前添加
    Thread.sleep(2000)

  • 或者删除
    Continuation.complete()
    调用,该调用将使Continuation等待
    Continuation.setTimeout()中指定的最长时间。现在发生的事情是,您立即通知您的“计算”已完成(通过调用
    cc.complete()


    • 我终于找到了continuations api。下面的代码对我有用。谢谢你们的支持

      import java.io.*;
      import java.util.*;
      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      
      import org.eclipse.jetty.continuation.*;
      
      public class cs extends HttpServlet {
      
        public void doGet(HttpServletRequest req, HttpServletResponse res)
            throws java.io.IOException {
      
          String reqId = req.getParameter("id");
      
          Continuation cc = ContinuationSupport.getContinuation(req);
      
          res.setContentType("text/plain");
          res.getWriter().println("Request: " + reqId + "\tstart:\t" + new Date());
          res.getWriter().flush();
      
          cc.setTimeout(2000);
          cc.suspend();
      
          res.getWriter().println("Request: " + reqId + "\tend:\t" + new Date());
          if (cc.isInitial() != true) {
            cc.complete();
          }
        }
      }
      
      输出:

      Request: null   start:  Sat May 21 15:25:02 IST 2011
      Request: null   end:    Sat May 21 15:25:02 IST 2011
      Request: null   start:  Sat May 21 15:25:04 IST 2011
      Request: null   end:    Sat May 21 15:25:04 IST 2011