This week's book giveaway is in the Java 8 forum.
We're giving away four copies of Java 8 in Action and have Raoul-Gabriel Urma, Mario Fusco, and Alan Mycroft 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 Java 8 in Action this week in the Java 8 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: 39576
    
  27
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 - updated with new look and Ping home screen widget
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: 39576
    
  27
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
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: DB query from bean
 
Similar Threads
logic:equal tag not evaluting inside html:button tag
How to store multiple items into a shopping cart?
How assign to null an obj that contains other objs as attributes
Unable to redirect the page through dispatcher
Shopping cart application using struts