Hi Paul,
Your question relates more to general programming then servlets
specifically.
If from with in a method you create an object x:
MyObject x = new MyObject()
It doesn't matter how many threads access the members of x as long as each
one create a new instance of x as above.
>>But surely, if two requests (threads) run through this block at the same
>>time there is still a possibility of a problem with data integrity?
..method variables never share the same address space for multiple threads.
The only time you may have this is if your method is declared as static
accessing static variables.
As far as multi threaded servlets are concerned you should never have member
variables unless they are to be shared amongst all threads.
So for your servlet, rather create an object that handles your for request
say MyRequestHandler, and create a new Instance of the RequestHandler for
each thread (as above) and you can have as many member variables as you want
:)
-----Original Message-----
From: A mailing list for discussion about Sun Microsystem's Java Servlet
API Technology. [mailto:[EMAIL PROTECTED]]On Behalf Of Paul
Foxton
Sent: 16 July 2001 15:22
To: [EMAIL PROTECTED]
Subject: concurrent access to variables with class or block scope
Hi all,
I've been wondering about the fact that concurrent requests to a servlet
will result in a new thread being created to access the same instance of the
servlet as long as singleThreadModel is not implemented with reference to
the following:
If you have a servlet which accesses a database, and request parameters from
an HTML form are used to build the SQL where clause, if these request
parameters are stored in class instance variables (i.e. declared at the
beginning of the class and outside of any methods, so class scope), would
this mean that there is a possibility of data being overwritten in the
middle of 2 or more concurrent requests and therefore compromising the
integrity of the data retrieved from the database?
If so, I would have thought that the way around this is to store the values
from the request parameters in variables declared inside methods, which
would then have block scope within that method.
But surely, if two requests (threads) run through this block at the same
time there is still a possibility of a problem with data integrity?
This doesn't seem quite right to me tho, because then you would have to
synchronize access to any method or variable which was used to build an sql
query or update.
Can anyone clarify?
Sorry if this is an obvious question. I've read through the documentation on
threads in servlets at Suns java site, but am still a little confused.
Thanks,
Paul
___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".
Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html
___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".
Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html