This week's book giveaway is in the Servlets forum.
We're giving away four copies of Murach's Java Servlets and JSP and have Joel Murach on-line!
See this thread for details.
The moose likes Servlets and the fly likes DB query from bean Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » Servlets
Bookmark "DB query from bean" Watch "DB query from bean" New topic
Author

DB query from bean

John Schretz
Ranch Hand

Joined: Sep 10, 2008
Posts: 188
Is it ok and thread safe to call a static DAO method from a bean class?

I.E. Create a new cart object to be used in a servlet
then in that instance of cart make calls to the DB as ahown below.

Would this give me any problems?



Within cart class
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 41034
    
  43
No, that's not thread-safe, since servlets are multi-threaded. Unless you make provisions for it (e.g., synchronizing that code section in the servlet, or making DiscountDB.GetNewUserDiscount() thread-safe) the code can run into trouble.


Ping & DNS - my free Android networking tools app
John Schretz
Ranch Hand

Joined: Sep 10, 2008
Posts: 188
Ulf Dittmer wrote:No, that's not thread-safe, since servlets are multi-threaded. Unless you make provisions for it (e.g., synchronizing that code section in the servlet, or making DiscountDB.GetNewUserDiscount() thread-safe) the code can run into trouble.


ok but i should be fine with executing DiscountDB.GetNewUserDiscount() right from the servlet then, correct?
Bauke Scholtz
Ranch Hand

Joined: Oct 08, 2006
Posts: 2458
Servlets are at its own multithreaded. It is a very bad idea to synchronize servlet requests.

So either remove that 'static' modifier of the DAO method --this makes indeed no sense--, or make sure that your DAO method is written threadsafe (no access to static variables and having only method variables).
John Schretz
Ranch Hand

Joined: Sep 10, 2008
Posts: 188
Bauke Scholtz wrote:Servlets are at its own multithreaded. It is a very bad idea to synchronize servlet requests.

So either remove that 'static' modifier of the DAO method --this makes indeed no sense--, or make sure that your DAO method is written threadsafe (no access to static variables and having only method variables).


I have moved DiscountNewUser newUserDiscI = DiscountDB.GetNewUserDiscount(); into the servlet. All variables are are method variables. So im good now. thanks
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 41034
    
  43
I have moved DiscountNewUser newUserDiscI = DiscountDB.GetNewUserDiscount(); into the servlet. All variables are are method variables. So im good now.

... only if DiscountDB.GetNewUserDiscount is thread-safe. Otherwise there'll be trouble.
Bauke Scholtz
Ranch Hand

Joined: Oct 08, 2006
Posts: 2458
When he said " All variables are are method variables.", I think (and hope) that he actually meant the DB method.
John Schretz
Ranch Hand

Joined: Sep 10, 2008
Posts: 188
Bauke Scholtz wrote:When he said " All variables are are method variables.", I think (and hope) that he actually meant the DB method.


Yes
 
 
subject: DB query from bean
 
Similar Threads
Shopping cart application using struts
Unable to redirect the page through dispatcher
logic:equal tag not evaluting inside html:button tag
How assign to null an obj that contains other objs as attributes
How to store multiple items into a shopping cart?