Thanks Chuck, that was exactly the problem. I was under the very poor
assumption that a new thread and newly instantiated servlet object was
created every time a request was made, instead of all threads working on
only one instance of an object. To mimic the desired behavior I've fixed
the problem by adding this (implements SingleThreadModel)...
public class ServletName implements SingleThreadModel
Now it would seem that if several 100 people were to access a servlet that
every time the following code was hit by a new thread:
PrintWriter out = response.getWriter();
It would direct all output (using out.println()) from all threads to the
most recent person to access the servlet.
Follow up question: With this in mind, what is the most common method of
writing thread safe code?
Thank you very much for your help.
-Mike
-Original Message-
From: Caldarale, Charles R [mailto:[EMAIL PROTECTED]
Sent: Tuesday, June 07, 2005 1:15 PM
To: Tomcat Users List
Subject: RE: Servlet Concurrency Issues
From: Michael Pasko [mailto:[EMAIL PROTECTED]
Subject: Servlet Concurrency Issues
I started allowing other users on it, I stumbled on some problems.
Basically what happens, when user A submits the form, and then 2
seconds later user B submits the same form. User A stops getting
results, and User B receives the output for his request as well as
the end of User A's request.
Probably not a configuration problem but rather implementation errors in
your servlet or some related object (such as the DB connection).
There's normally only one copy of the servlet object, and it will be
used concurrently by multiple threads. Make sure you're not storing
request-specific information in there.
- Chuck
THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY
MATERIAL and is thus for use only by the intended recipient. If you
received this in error, please contact the sender and delete the e-mail
and its attachments from all computers.
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]