Hi, If u want to threadsafe there is two ways. One is implements SingleThreadModel. But this will give good result but performance will be poor. Another way is u can synchronize some code using synchronized block(mainly database statements which ever is necessary). Take care when ever createing Object's globally in servlets. Bye.
On Apr 12, 2005 7:24 AM, Brett Zamora <[EMAIL PROTECTED]> wrote: > Hi... > > I'm trying to build a JSP/Servlet application that will retrieve, add, > update, and delete records from a database. I've recently encountered some > of the complications that can be seen if a servlet is not written to be > thread safe. > > First I'd like to say that I've been reading and reading on this issue and I > thought I had a pretty good grasp on the subject, however, I still cannot > eliminate the condition I am experiencing. > > The problem I'm seeing is when I first start up my application server, > either Tomcat or Resin, and I run my application, which retrieves records to > be displayed from the database, invalid data is displayed in some of the > fields. Basically, the instance variables for the bean class are being > trashed. > > I can only create this condition the first time after I stop and restart the > application server. After the first occurrence, it does not seem to > continue. This doesn't mean the condition doesn't exist, just that I can't > seem to recreate it. > > I have set up a sample of the problem at http://www.zware.net/simpleDemo > > It is a very basic, very small sample amount of code that does what I > outlined on the simple demo page. I've also provided the source code, so > that anybody that might be willing to help me, could see how I am attempting > to synchronize my code to avoid the condition I am seeing. > > In a nutshell, I create a bean for the user record. I then synchronize the > bean and call a method to retrieve the data. Before exiting the synchronize > block, I add the bean to the session object. I then exit the synchronize > block and forward control to the jsp page to display the data. > > As I said, I can only cause the condition to occur in a very specific way, > however, I'm inclined to believe that I'm doing something drastically wrong > and I am afraid to continue developing anything until I completely > understand how to avoid the multi-threading problem that I seem to be > experiencing. > > I would appreciate any feedback that anybody could provide on what I've done > wrong. Please don't slam me for code structure. This simple app was put > together to be readable and to solicit some assistance with my > use/understanding of how to synchronize an object. > > Synchronization seems pretty straight-forward, conceptually, however, I > cannot resolve this issue. I've even gone so far as to use the implements > SingleThreadModel on the SimpleCtl class, but this still does not resolve > the condition. > > I'm wondering if it could be my JDBC driver? My backend database is MySql > and I've tried a couple of version 3.x JDBC drivers, but again, I cannot > resolve the problem. > > Any help is greatly appreciated. > > Regards, > > Brett > > Sample: http://www.zware.net/simpleDemo > > ___________________________________________________________________________ > 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 > -- P.Narendra Krishna, MCA. (9892950229) ___________________________________________________________________________ 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