| |
GeekInterview.com > Interview Questions > J2EE > EJB
| Print | |
Question: Is it possible to share an HttpSession between a JSP and EJB. What happens when I change a value in the HttpSession from inside an EJB
|
| April 04, 2007 08:07:37 |
#2 |
| k_yogi85 |
Member Since: Visitor Total Comments: N/A |
RE: Is it possible to share an HttpSession between a J... |
You can pass the HttpSession as parameter to an EJB method, however you should have all objects in session be serializable.This has to be consider as passed-by-value, that means that it’s read-only in the EJB. If anything is altered from inside the EJB, it won’t be reflected back to the HttpSession of the Servlet Container.
The pass-by-reference can be used between EJBs Remote Interfaces, as they are remote references.
While it is possible to pass an HttpSession as a parameter to an EJB object, it is considered to be bad practice in terms of object-oriented design. This is because you are creating an unnecessary coupling between back-end objects (EJBs) and front-end objects (HttpSession).
Better way to do it is, create a higher-level of abstraction for your EJBs API. Rather than passing the whole, fat, HttpSession (which carries with it a bunch of http semantics), create a class that acts as a value object (or structure) that holds all the data you need to pass back and forth between front-end/back-end. Consider the case where your EJB needs to support a non HTTP-based client. This higher level of abstraction will be flexible enough to support it. |
| |
Back To Question | |