aspose file tools*
The moose likes EJB Certification (SCBCD/OCPJBCD) and the fly likes java application accessing the ejb Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Certification » EJB Certification (SCBCD/OCPJBCD)
Bookmark "java application accessing the ejb" Watch "java application accessing the ejb" New topic
Author

java application accessing the ejb

veena madhukar
Ranch Hand

Joined: Apr 28, 2006
Posts: 86
How to access the EJB (session beans) from a swing application keeping code reuse in mind? EJBs are created as the same functionality needs to be web enabled also. I do not want to access the EJB as a web service from client / swing application. Any thoughts or any useful links?
Richard Green
Ranch Hand

Joined: Aug 25, 2005
Posts: 536
Your web application / swing application needs to talk to the EJB via a delegate.

The delegate needs to use the Service Locator to locate the home inteface of the session facade.

Ok let me give you a small example. Lets say that you have three entity beans (a) user (stores login details) (b) employee (c) department. Each of the above bean has its own home and component interface. You want to expose few methods in these three interfaces to the client. Rather than the client perform a lookup and identifying which interface he needs to use to call a business method, we hide all the complexity in a single business component that that contains and centralizes complex interactions between lower-level business components.

ie., in this case I would create a single stateless session bean and expose the component methods in it.

Example:

The above class (SessionFacde) is a stateless session which means that you still need to create a home and component interface. You have now consolidated all the business functions into one big class but still clients have to do all the lookup to get to it. Do you want your clients to know that you are using EJB? No, ofcourse not.

So we need one more level of abstraction. We need a delegate. The delegate will be the contact point for the client. The delegate will perform all the JNDI lookup and call the appropriate business function.

So, your delegate class (remember, its not a session / entity bean) - its a plain old java class will look something like:



Sounds better. But wait!! Whats with all the duplicate code in the DummyDelegate. Wouldn't it be great if all the jndi lookup is handled in one place? Yeah, probably. So here is a better Delegate class



and the servicelocator will be responsible for all the JNDI lookup. How good is that?

So, to reiterate:- The delegate needs to use the Service Locator to locate the home inteface of the session facade.


MCSD, SCJP, SCWCD, SCBCD, SCJD (in progress - URLybird 1.2.1)
Richard Green
Ranch Hand

Joined: Aug 25, 2005
Posts: 536
p.s: no time to proof read. kindly adjust with all grammatical and spelling mistakes.
veena madhukar
Ranch Hand

Joined: Apr 28, 2006
Posts: 86
Thank you very much. Very beautifully explained. Helped me a lot.
Valentin Crettaz
Gold Digger
Sheriff

Joined: Aug 26, 2001
Posts: 7610
Nice job Lynette


SCJP 5, SCJD, SCBCD, SCWCD, SCDJWS, IBM XML
[Blog] [Blogroll] [My Reviews] My Linked In
veena madhukar
Ranch Hand

Joined: Apr 28, 2006
Posts: 86
I have a question regarding the data from web tier.

Let us say the search is done and the result is fetched by making a series of calls like

User --> JSP --> Servlet Controller --> Action --> Business Delegate --> Service Locator --> Stateless Session Bean --> DAO.

Next time when details are asked, i would like to do search within the earlier fetched result. Then will the following be OK?

User --> JSP --> Servlet Controller --> Action --> Business Delegate Detail JSP.

Kindly tell me where the search result which was retrieved earlier will be available in the web tier? Will it be in the servlet controller class or Action Or Business Delegate?

I do not want to use stateful session bean for storing the ealrier fetched result. It is something like showing the order details from order list. Order list is not a very big list.
Richard Green
Ranch Hand

Joined: Aug 25, 2005
Posts: 536
you can store the search results in the delegate.
veena madhukar
Ranch Hand

Joined: Apr 28, 2006
Posts: 86
If I store it in Business Delegate ---> will it be in HTTP Session. Can you pls. point me to an example on how are they stored in HTTP Session?
Jeroen T Wenting
Ranch Hand

Joined: Apr 21, 2006
Posts: 1847
EJBs have nothing to do with HTTP sessions, you are responsible for handling what you put into those yourself.


42
Richard Green
Ranch Hand

Joined: Aug 25, 2005
Posts: 536
Originally posted by veena madhukar:
If I store it in Business Delegate ---> will it be in HTTP Session. Can you pls. point me to an example on how are they stored in HTTP Session?

no. whatever function you call on the delegate that returns the results, needs to do something like this:



Alternatively you can put the results in your HTTPsession. The choice is yours.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: java application accessing the ejb