TECHNICALFACILITATION.COM - THE ULTIMATE WEBSPHERE AND JAVA CERTIFICATION GUIDES AND RESOURCES
Google
Download the Completed Solution: 15ejbclientservlet.ear.

Scroll to the bottom of the page for pertinent code snippets.

Please link to our site, support our site, and remember: Happy WebSphere!

JNDI and Invoking EJBs from EJB Clients

This free, multimedia tutorial shows you how to use IBM's Rational Application Developer (IRAD) 6.0 to create client applications, namely a Servlet, that can invoke local and remote EJBs.

This tutorial also plays around with varios ways of invoking a JNDI addressable resource, by doing things such as invoking the EJB directly (bad idea!!!), using a resource reference, and even using a topology dependent JNDI name, which was a mechanism introduced with WebSphere 5, but can be a great tool in troubleshooting JNDI problems and challenges.

One of the other things you might find helpful, is the fact that this sample shows you how to invoke remote EJBs, but also how to invoke an entity or session EJB through it's local interface. Nobody ever knows how to use a local interface and a JNDI lookup together for some reason?

If you found something helpful here, please do your part and help support the site. Link to us, buy some books, support our sponsors, tell your developer friends about us, and remember: Happy Java!

package com.examscam.servlet;

import java.io.IOException;

import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.examscam.ejb.PersonBMPLocal;
import com.examscam.ejb.PersonBMPLocalHome;
import com.examscam.ejb.StatefulTimerHome;
import com.examscam.ejb.StatefulTimerRemote;
import com.examscam.ejb.StatelessTimerHome;
import com.examscam.ejb.StatelessTimerRemote;

public class EJBClientServlet extends HttpServlet implements Servlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try{
InitialContext ic = new InitialContext();
Object result = ic.lookup("java:comp/env/ejb/StatefulTimer");
StatefulTimerHome timerHome =(StatefulTimerHome) PortableRemoteObject.narrow(result,StatefulTimerHome.class);
StatefulTimerRemote timerRemote = timerHome.create();
timerRemote.start();
for (int i = 0; i<100; i++){
response.getWriter().print("<BR>Stateful Elapsed Time: " + timerRemote.getElapsedTime());

}
} catch (Exception e) {
System.out.println(e.getClass() + e.getMessage());

}

try{

InitialContext ic = new InitialContext();
Object result = ic.lookup("java:comp/env/ejb/StatelessTimer");
//Object result = ic.lookup("cell/nodes/baseNode01/servers/server1/ejb/com/examscam/ejb/StatelessTimer");

System.out.println(result);
StatelessTimerHome statelessTimerHome =(StatelessTimerHome) PortableRemoteObject.narrow(result,StatelessTimerHome.class);
StatelessTimerRemote statelessTimerRemote = statelessTimerHome.create();
long startTime = statelessTimerRemote.start();
for (int i = 0; i<100; i++){
response.getWriter().print("<BR>Stateless Elapsed Time: " +statelessTimerRemote.getElapsedTime(startTime));

}
} catch (Exception e) {
System.out.println(e.getClass() + e.getMessage());

}

try{

InitialContext ic = new InitialContext();
Object result = ic.lookup("local:ejb/ejb/com/examscam/ejb/PersonBMPLocalHome");
System.out.println(result);
PersonBMPLocalHome personBMPLocalHome =(PersonBMPLocalHome) result;
PersonBMPLocal person = personBMPLocalHome.create();
person.setAge(33);
person.setName("Tyler Durden");
response.getWriter().print("<BR>PersonBMP : " + person.getName() + ": " + person.getAge());

} catch (Exception e) {
System.out.println(e.getClass() + e.getMessage());

}




}

}

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>
ExamScamWeb</display-name>
<servlet>
<description>
</description>
<display-name>
CountrySnooper</display-name>
<servlet-name>CountrySnooper</servlet-name>
<servlet-class>
com.examscam.servlet.CountrySnooper</servlet-class>
</servlet>
<servlet>
<description>
</description>
<display-name>
SessionServlet</display-name>
<servlet-name>SessionServlet</servlet-name>
<servlet-class>
com.examscam.servlet.SessionServlet</servlet-class>
</servlet>
<servlet>
<description>
</description>
<display-name>
NumberGuesserServlet</display-name>
<servlet-name>NumberGuesserServlet</servlet-name>
<servlet-class>
com.examscam.servlet.NumberGuesserServlet</servlet-class>
</servlet>
<servlet>
<description>
</description>
<display-name>
EJBClientServlet</display-name>
<servlet-name>EJBClientServlet</servlet-name>
<servlet-class>
com.examscam.servlet.EJBClientServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CountrySnooper</servlet-name>
<url-pattern>/CountrySnooper</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SessionServlet</servlet-name>
<url-pattern>/SessionServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>NumberGuesserServlet</servlet-name>
<url-pattern>/NumberGuesserServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>EJBClientServlet</servlet-name>
<url-pattern>/EJBClientServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

<jsp-config>
<taglib>
<taglib-uri>/WEB-INF/examscam-taglib.tld</taglib-uri>
<taglib-location>/WEB-INF/examscam-taglib.tld</taglib-location>
</taglib>
</jsp-config>
<ejb-ref id="EjbRef_1160612803906">
<description>
</description>

<ejb-ref-name>ejb/StatefulTimer</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>com.examscam.ejb.StatefulTimerHome</home>
<remote>com.examscam.ejb.StatefulTimerRemote</remote>
<ejb-link>ExamScamEJB.jar#StatefulTimer</ejb-link>
</ejb-ref>
<ejb-ref id="EjbRef_1160612803907">
<description>
</description>
<ejb-ref-name>ejb/StatelessTimer</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>com.examscam.ejb.StatelessTimerHome</home>
<remote>com.examscam.ejb.StatelessTimerRemote</remote>
<ejb-link>ExamScamEJB.jar#StatelessTimer</ejb-link>
</ejb-ref>



</web-app>
Google
THE ULTIMATE CERTIFICATION AND WEBSPHERE RESOURCES - BUY THEM NOW ON AMAZON
eXTReMe Tracker