you might want to consider using a stored procedure to make it look like a single call from tomcat. is the goal here to make sure the counter is incremented correctly? I'm guessing there's situations where the counter shouldn't be incremented?
you can also use a subquery to increment the counter. there's plenty of articles on how to do this the simple way. I hope that helps peter On Thu, 30 Sep 2004 10:43:22 -0400, Malia Noori <[EMAIL PROTECTED]> wrote: > Actually, the data that I am modifying requires a transaction and > synchronization. It increments a counter stored in the database. So, I > have to do a select to get the current value, increment the counter, and > then insert the new value. So if two threads are accessing it at the same > time, the counter will not be properly incremented. What's puzzling is that > method level synchronization does not work while synchronizing on a block of > code inside a method works. > > Thanks, > Malia > > > > -----Original Message----- > From: Peter Lin [mailto:[EMAIL PROTECTED] > Sent: Thursday, September 30, 2004 10:26 AM > To: Tomcat Users List; [EMAIL PROTECTED] > Subject: Re: method level synchronization doesn't work > > am I missing something, but looks like you're trying to build some > kind of web cache. why not use Hibernate or something that already > does caching for you instead? > > the only time I can see a need to sync, is if the request contains > data that requires a transaction. Which in that case, you're better > off doing an insert, then a second select query with the same > connection. > > or is the scenario a distributed objects setup? > > peter > > On Thu, 30 Sep 2004 10:05:41 -0400, Malia Noori > <[EMAIL PROTECTED]> wrote: > > Hi, > > > > I am using Tomcat 4.1 and I am accessing MS SQL Server database via JDBC. > I > > have a JSP that calls a web bean. This web bean has a section of code > that > > I want to synchronize, but when I synchronize the method, Tomcat doesn't > > actually synchronize the threads. (I tried this by having 2 users access > my > > JSP at the same time). When I synchronize the code in the method by using > a > > mutex, it works. > > > > So, doing this doesn't work: > > > > public synchronized void amethod() > > > > { > > > > //some code that access the database and needs to be synchronized > > > > } > > > > But doing this works: > > > > public void amethod() > > > > { > > > > String mutex = ""; > > > > synchronize(mutex) > > > > { > > > > //some code that access the database and needs to be synchronized > > > > } > > > > } > > > > Why does synchronization on the method doesn't work? Does Tomcat not > allow > > locking of object caused by method level synchronization? Any help will > be > > appreciated. > > > > Thanks, > > > > Malia > > > > > > --------------------------------------------------------------------- > 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] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
