tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Achilleus Mantzios <...@gatewaynet.com>
Subject Servlet wierd threading behaviour in tomcat 4.0.1
Date Fri, 22 Mar 2002 07:04:07 GMT
Hi,
firstoff my excuses for posting to the developer list,
but unfortunately user-list didnt shed some light on the issue.
So here it is :)


I have seen a strange threading behaviour in catalina engine.
For servlets that
a) Dont implement SingleThreadModel
b) Dont synchronize over resources
c) Dont have service methods synchronized,

the server serves 2 concurrent requests to 2 clients requesting the same URL
sequentially.
Suppose the following servlet is mapped to /servlet/ThreadTest.

When i invoke from 2 clients
http://myserver/servlet/ThreadTest?foo1=bar1&foo2=bar2 and
http://myserver/servlet/ThreadTest?foo2=bar2&foo1=bar1 respectively

the server seems to spawn 2 threads running the service method of the servlet
as expected.

However when a invoke the follwing 2 urls (or in general IDENTICAL URLS)
e.g.

http://myserver/servlet/ThreadTest?foo1=bar1&foo2=bar2 and
http://myserver/servlet/ThreadTest?foo1=bar1&foo2=bar2 respectively

then the threads (thread?) run as if i had synchronized the service method.

This looks like a bug, here is the source of the simple servlet.

The servlet is as follows....
/*****************************************************************/
import javax.servlet.*;
import javax.servlet.http.*;

public class ThreadTest extends HttpServlet {  
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }

    protected void processRequest(HttpServletRequest,HttpServletResponse 
response)
    throws ServletException, java.io.IOException {
        response.setContentType("text/html");
        System.out.println("In the begin damnit");
        try {
        Thread.sleep(10000);
        }
        catch (Exception e) {}
    } 

    protected void doGet(HttpServletRequest request, HttpServletResponse 
response)
    throws ServletException, java.io.IOException {
        processRequest(request, response);
    } 
    protected void doPost(HttpServletRequest request, HttpServletResponse 
response)
    throws ServletException, java.io.IOException {
        processRequest(request, response);
    }
}

-- 
Achilleus Mantzios
S/W Engineer
IT dept
Dynacom Tankers Mngmt
tel:    +30-10-8981112
fax:    +30-10-8981877
email:  it@dynacomtm.com
        rnd@gatewaynet.com


--
To unsubscribe, e-mail:   <mailto:tomcat-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:tomcat-dev-help@jakarta.apache.org>


Mime
View raw message