1 Reply Latest reply on Oct 16, 2002 4:15 AM by sal ingrilli

    Can't handle more than 1 user?

    sal ingrilli Newbie

      Hello everyone.

      If a request is processing, no other request is allowed in until the first one is done!

      I've got 1 jsp that performs a function that is lengthy, but not cpu-intensive:
      for (int n = 0; n < 10; n ++) {
      System.out.println ("Thread: " + Thread.currentThread().getName() + " sleep count " + n);
      Thread.sleep (1000);
      }


      And here is its trace:

      "HttpProcessor[80][47]" daemon prio=5 tid=0x3214e90 nid=0xaa8 waiting on monitor [0x41ef000..0x41efdbc]
      at java.lang.Thread.sleep(Native Method)
      at org.apache.jsp.viewSystemMetrics$jsp._jspService(viewSystemMetrics$jsp.java:128)
      at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
      at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:202)
      at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
      at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
      at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
      ...


      Here is ANY another reuqest coming in: it waits until the first one gets done!
      "HttpProcessor[80][46]" daemon prio=5 tid=0x3214828 nid=0xbd0 waiting on monitor [0x41af000..0x41afdbc]
      at java.lang.Object.wait(Native Method)
      at java.lang.Object.wait(Object.java:420)
      at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:638)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
      at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
      ...

      When the first one is done, the second one goes through & processes fine.

      Anybody knows why/how to get multiple requests processed simultaneously? I'm looking through source but not luck yet.

        • 1. Re: Can't handle more than 1 user?
          sal ingrilli Newbie

          All right -- I got the answer.

          That's what we get for copying the gateway controller... sounds familiar?

          public class GatewayController extends HttpServlet implements SingleThreadModel {

          Tomcat sees the SingleThreadModel & does just what we ask it to do when our servlet implements SingleThreadModel: all requests are handled by 1 thread, irrelevant of how many socket accept threads there are (50 in our case as you could guess).

          No wonder the same test through text-based ejb clients worked like a charm!

          Later gaters!