Hi,
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.
Thanx for any clues...
Is it actually a bug in catalina??
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);
}
}