This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Hi all, I am a newbie to EJB. Sorry, if this sounds like a redundant enquiry. My doubt is related to the difference between Stateful and Stateless session beans.
I have 3 jsps(numbered j1, j2, j3) and 2 servlets(s1 and s2). The values in j2 and j3 depend on the values selected on j1. I'm using s1 and s2 to write out the values to the persistent source and navigation.
How would you use a stateful session bean in this context. (All the values are specific to the user that is using the current session)? Would it be a good design to use a stateless session to execute the business processes and then pass its(the beans) instance by setting it in the session across multiple requests?
If the bean's information is specific to a single user, you're correct: a stateful session bean would be an appropriate choice. The question you should be asking yourself as a newbie is: "Why should I be using EJB instead of a regular POJO?"
Many folks around here will tell you that EJB is overkill for alot of situations. So be careful you don't end up creating more work for yourself when a more simple solution would be just as good.
hi all, Nathaniel thanks a lot for your reply. I really appreciate that. But I'm in a situation where its mandatory for me to use EJB. So if you could provide more information to my query I'd be grateful.
Would it be a good design to use a stateless session to execute the business processes and then pass its(the beans) instance by setting it in the session across multiple requests?
Caching the bean instance in the session object (or in any other way) is definitely not a good design decision. One obvious reason is that your container might passivate or remove that instance and you�ll cache an invalid instance. There are design patterns that suggest caching either the home interface or the ejb handler, but I wouldn�t recommend the second one either (especially with SFSB). If I understood your problem correctly you need to decide whether to save the session information in the HttpSession object or to use a SFSB. If that�s the case than I would suggest you to use the HttpSession object. Regards.
I think, therefore I exist -- Rene Descartes
Kiran G Kumar
Joined: May 01, 2005
hey valentin, thanks a lot for your reply. Could you please let me know how would you design the scenario I mentioned in the first thread using EJB's? Or if you could direct me to some example that uses SFSB to access client information across more than one JSP it'd be great.
Joined: Feb 17, 2005
example that uses SFSB to access client information across more than one JSP
Usually SFSBs don�t access client information. It�s the client that sends the information to the bean. A good example is the shopping chart sample. Do some searches on the net, you might find some good examples. As a design strategy you have to understand that it�s always better to decouples business components from the code that uses them. Usually your clients should not be aware about the back end server components. They should not care whether they are talking to an ejb container, web services or corba services. Check the business delegate and service locator design patterns as well. Regards.
Kiran G Kumar
Joined: May 01, 2005
hey valentin, I appreciate your patience in replying to my thread. I'm sorry abt the previous message that I posted. What I actaully meant was the client sending information to the SFSB. Elucidating the problem... I have a JSP(1) that submits some info to the SFSB somewhere down the line of request and responses say for example in JSP(n)I would want to access the information submitted through JSP(1). I have gone through many shopping cart examples but they all exemplify a single request scenario. If you cld help me out with this I'd be grateful. I hope u understand I'm totally confused about this thing. And I'm sure one example would clear up the mess I'm in.