Welcome To Enterprise Jave Beans (EJB) Training
-
Upload
hayley-ewing -
Category
Documents
-
view
43 -
download
1
description
Transcript of Welcome To Enterprise Jave Beans (EJB) Training
![Page 1: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/1.jpg)
Presented By
Pradeep K Sahu
![Page 2: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/2.jpg)
What will be the Contents of the Seminar ?
What is EJB ?
EJB Architecture
Types of EJB
Session
Entity
Why EJB ?
Writing a Hello World Session EJB
Differences between Java Bean and Enterprise Java Bean
![Page 3: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/3.jpg)
It defines a framework for creating distributed enterprise middleware
Enterprise Java Beans (EJB) ….
Defines a standard to building distributed server side systems
Frees the EJB developer to only concentrate on programming the business logic
Handles the other “plumbing” to handle transactions, security connection /thread pooling etc., by delegating this to the vendor
![Page 4: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/4.jpg)
Differences between
No explicit support exists for transactions in Java beans.
EJB may be transactional and the EJB server provide transactional support.
Java Beans Enterprise Java BeansCan be either visible or non-visible
Are decidedly Non –Visible remote objects
Intended to be local to a single process on the client side
Remotely executable components deployed on the server
Uses the Bean Info classes. Property Editors and Customizers to describe it self
Uses the Deployment Descriptor to describe itself
Can also be developed as an ActiveX control
Cannot be deployed as an ActiveX control since OCX run on the desktop
![Page 5: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/5.jpg)
Why Enterprise Java Beans?
Architectural Independence from middleware
Write Once Run Anywhere (WORA) for server side components
Establishes role for application development
Takes care of Transaction Management
Provides Distributed Transaction support
Helps create Portable and scalable solutions
Integrates seamlessly with CORBA
Provides vendor specific enhancements
![Page 6: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/6.jpg)
Components of the EJB Architecture are
The EJB Architecture
EJB Client
EJB server
EJB Container
The Home Interface and Home Object
The Remote Interface and EJBObject
EJBeans
Other services like JNDI,JTS & Security
![Page 7: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/7.jpg)
Architecture
![Page 8: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/8.jpg)
Makes EJB Container visible
The EJB Server
Provides an organized framework for EJB Containers to execute in
Provides system-services like multiprocessing, load balancing, device access, JNDI accessible naming and transaction services available to the container
![Page 9: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/9.jpg)
Session containers contain session EJBs and Entity containers contain entity EJBs
EJB Containers
Interface between EJBeans and outside world
EJB client never access an EJBeans directly –any access is done through container- generated methods which in turn invoke bean methods
![Page 10: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/10.jpg)
The Home Object is the implementation of the Home Interface
The Home Interface and The Home Object
Contains Factory methods for locating creating and removing instances of EJBs
The EJB developer defines the Home Interface for his bean
The Home Object is generated by tools provided by the Container Vender
![Page 11: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/11.jpg)
The Remote Interface and the EJB Object
EJB Clients use the methods present in the Remote Interface to invoke business methods of the EJBean
The Remote Interface lists the business methods present in an EJB classThe Remote Interface is defined by the EJB developerThe EJBObject which is the concern class for the Remote Interface is generated by the tools provided by the container vendor
![Page 12: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/12.jpg)
The EJB Client
Finds EJB containers using JNDIUses EJB containers to invoke EJB methodsUses the Home Object to locate , create,or destroy an EJB class.Uses the EJBObject instance to invoke business methods of the EJB instance
![Page 13: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/13.jpg)
The Enterprise Java Bean
Contained within the EJB container and is only accesses through the container
There are two types of EJBeans
Session Entity(3rd type Message Driven Bean is added in EJB 2.0)
Session Beans are again two typesStateless and
Stateful
![Page 14: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/14.jpg)
Difference between Session and Entity Bean
Session Bean Entity BeanAre associated with a particular client
Are shared by multiple clients
Handle database access for a particular client
Handle database access for a multiple clients
Life is limited to the life of a particular client
Persist across multiple invocations
Do not survive server crashes
Survive server crashes
![Page 15: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/15.jpg)
Start the server and execute the client
Steps involved in Developing an EJB
Define Home InterfaceDefine Remote InterfaceDevelop Entity or Session Bean In the case of Entity Beans, define the Primary Key Class Write the Deployment Descriptor / XML File.Compile all classes and create the Jar fileGenerate the container code by using the tools provided by the container provider
Develop the Client code
Deploy the EJB in the server
![Page 16: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/16.jpg)
We have covered
Lets Summarize…..
Next
Why we need EJB and its advantagesComponents of EJB ArchitectureTypes of EJB that is Session and Entity BeanDifference between Session and Entity Bean
Guess ?
![Page 17: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/17.jpg)
Yes, you are right…
Next Session Bean…..
![Page 18: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/18.jpg)
![Page 19: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/19.jpg)
Session Beans
Represents a business process and business process related logics.
Are two types
1. Stateless Session Bean : are beans that holds conversations that span a single method call.
2. Stateful session bean : are beans that hold conversations with clients that may span many method calls.
Now let’s write a “Hello World” Stateless Session Bean(We will deploy in Weblogic)
Introduction
![Page 20: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/20.jpg)
Writing a“Hello World !”
Stateless Session Bean
![Page 21: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/21.jpg)
Writing the Home Interface
Requirements for any Home Interface
Extend javax.ejb.EJBHome
Expose at least one create() method.
![Page 22: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/22.jpg)
The Complete java Code for HelloHome.java
import javax.ejb.*;
import java.rmi.RemoteException;
/**
* This is the home interface for HelloBean. This interface
* is implemented by the EJB Server's tools - the
* implemented object is called the Home Object and serves
* as a factory for EJB Objects.
*/
public interface HelloHome extends EJBHome {
/*
* This method creates the EJB Object.
*/
Hello create() throws RemoteException, CreateException;
}
![Page 23: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/23.jpg)
Writing the Remote Interface
Requirements for any Remote Interface
Extend javax.ejb.EJBObject
Declare the business methods that are to be exposed.
![Page 24: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/24.jpg)
The Complete java Code for Hello.java
import javax.ejb.*;import java.rmi.RemoteException;import java.rmi.Remote;/*** This is the HelloBean remote interface.** This interface is what clients operate on when* they interact with EJB objects. The container* vendor will implement this interface; the* implemented object is the EJB object, which* delegates invocations to the actual bean.*/public interface Hello extends EJBObject {/*** The one method - hello - returns a greeting to the client.*/public String hello() throws java.rmi.RemoteException;}
![Page 25: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/25.jpg)
Requirements for SessionBean
Extend javax.ejb.SessionBeanpublic interface javax.ejb.SessionBean extends javax.ejb.EnterpriseBean{public abstract void setSessionContext(SessionContext ctx) throws
java.rmi.RemoteException;public abstract void ejbPassivate() throws java.rmi.RemoteException;public abstract void ejbActivate() throws java.rmi.RemoteException;public abstract void ejbRemove() throws java.rmi.RemoteException;}
Implements the Business methods defined in the Remote interface.
In our example hello().
Writing the Bean Class
![Page 26: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/26.jpg)
The Complete java Code for HelloBean.java
import javax.ejb.*;public class HelloBean implements SessionBean {// EJB-required methods public void ejbCreate() {
System.out.println("ejbCreate()"); } public void ejbRemove() {
System.out.println("ejbRemove()"); } public void ejbActivate() {
System.out.println("ejbActivate()"); } public void ejbPassivate() {
System.out.println("ejbPassivate()"); } public void setSessionContext(SessionContext ctx) {
System.out.println("setSessionContext()"); } //Business methods public String hello{
System,out.println(“hello()”);return “Hello,World”;
}}
![Page 27: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/27.jpg)
Deployment Descriptor
To Deploy any Session Bean on Weblogic server 5.1 we need 2 descriptor (XML) file.
1. ejb-jar.xml :This XML file must conform to the DTD provided by JavaSoft in the EJB 1.1 specification. This XML file is not vendor specific.
2. weblogic-ejb-jar.xml : specifies deployment properties required for deploying EJBs in WebLogic Server (For example defines timeout, pooling, and clustering behavior for EJBs)
![Page 28: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/28.jpg)
Writing ejb-jar.xml Deployment Descriptor
<?xml version="1.0"?><!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN' 'http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd'><ejb-jar> <small-icon>images/green-cube.gif</small-icon> <enterprise-beans> <session> <small-icon>images/orange-cube.gif</small-icon>
<ejb-name>HelloWorld</ejb-name><home>HelloHome</home><remote>Hello</remote><ejb-class>HelloBean</ejb-class><session-type>Stateless</session-type><transaction-type>Container</transaction-type></session>
</enterprise-beans> <assembly-descriptor> <container-transaction>
<method> <ejb-name>HelloWorld</ejb-name> <method-intf>Remote</method-intf> <method-name>*</method-name></method><trans-attribute>Required</trans-attribute>
</container-transaction> </assembly-descriptor> </ejb-jar>
![Page 29: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/29.jpg)
Writing weblogic-ejb-jar.xml Deployment Descriptor
<?xml version="1.0"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 5.1.0 EJB//EN' 'http://www.bea.com/servers/wls510/dtd/weblogic-ejb-jar.dtd'>
<weblogic-ejb-jar> <weblogic-enterprise-bean> <ejb-name>HelloWorld</ejb-name> <caching-descriptor>
<max-beans-in-free-pool>10</max-beans-in-free-pool> </caching-descriptor> <jndi-name>HelloHome</jndi-name> </weblogic-enterprise-bean> </weblogic-ejb-jar>
The name which will be shown in the server
The JNDI Name for the client to lookup
Max no of bean in pool
![Page 30: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/30.jpg)
Creating EJB-jar
After getting all the java files compiled and the 2 xml file written we have to create the jar file containing all the files with the required order.For our Hello World application the files should be in the following order<Root>
Hello.classHelloHome.classHelloBean.class<META-INF>
ejb-jar.xml weblogic-ejb-jar.xml
<images> green-cube.gif
orange-cube.gif
Create the jar file with the following command
Jar cf <Jar File Name to be created> *.*
For Example jar cf HelloWorld.jar *.*
If package is defined then the files should be in the respective package orderLike MyPackage/Hello.class in the root
Icon image files
![Page 31: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/31.jpg)
Generating EJB Container classes and Deployment
Once the HelloWorld.jar file is created next is to
Create the container classes
Generate the container classes with the help of ejbc Compiler. The Command is
ejbc <source jarFile> <The target jar file>
Source jar file : is the jar file created by us.(Contains 2 XML files and Home,Remote and Bean classes.
The target jar file :The jar file which will be created.This will contain all the required container classes.
For Example : ejbc HelloWorld.jar HelloWorldEJB.jar
![Page 32: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/32.jpg)
Continue….
Once we get the jar file containing the Container classes we are ready to deploy the our EJB in Weblogic 5.1 server. We can deploy in a different ways.We will deploy by adding the jar file details to the weblogic.properties file so that the EJB will get automatically loaded when the application server starts.
The format isweblogic.ejb.deploy=<The Complete jar file path>
Note : The folder path separator is “/” not ‘\’
For example:weblogic.ejb.deploy=D:/Java/Programs/Examples/EJB/HeloWorldEJB.jar
After adding the above line restart the WebLogic.So that the EJB will get loaded.
![Page 33: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/33.jpg)
Lets Summarize…..
We have covered
EJB Architecture and its Components
Home Interface,Remote Interface
Session Bean Details
How to write a Stateless Session EJB
How to deploy an EJB in Weblogic server
Next
How to write the Client application.
![Page 34: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/34.jpg)
Lets take a
![Page 35: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/35.jpg)
How to write the Client program
The Client code performs the following tasks :
• Looks up a home object
• Uses the home object to create an EJB Object.
• Calls the business methods (hello() in our example) on the EJB object
• Removes the EJB Object.
![Page 36: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/36.jpg)
import javax.ejb.*;import javax.naming.*;import java.rmi.*;import java.util.Properties;
public class HelloClient {public static void main(String[] args) {
try {// Get System properties for JNDI initializationProperties props = System.getProperties();
// Form an initial contextContext ctx = new InitialContext(props);
// Get a reference to the home object (the factory for EJB objects)HelloHome home = (HelloHome) ctx.lookup("HelloHome");
// Use the factory to create the EJB ObjectHello hello = home.create();
//Call the hello() method, and print itSystem.out.println(hello.hello());
//Remove the EJB Objecthello.remove();
} catch (Exception e) {e.printStackTrace();
} }}
The Complete java Code for HelloClient.java
![Page 37: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/37.jpg)
The Client needs the following components or parameters
The J2EE class files in the classpath The Home and Remote Interface in it’s classpath The JNDI environment informationRunning the Client
1. Run the setEnv.bat file present in the Weblogic root folder to set the class path and other environment settings
2. Run the Client with the JNDI parameters.In case of weblogic we can run the command by the
following commandjava -Djava.naming.factory.initial=weblogic.jndi.TengahInitialContextFactory
-Djava.naming.provider.url=t3://localhost:7001 <ClientClassFile2Run >
For our HelloWorld application it is java -Djava.naming.factory.initial=weblogic.jndi.TengahInitialContextFactory
-Djava.naming.provider.url=t3://localhost:7001 HelloClient
Running the Client
![Page 38: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/38.jpg)
The Server-Side OutputWhen we run the client, our container shows the folloeing output
setSessionContext()ejbCreate()hello()ejbREmove()
The Client-Side OutputAfter running the client, we can see the following out put :
Hello,World!
Output
![Page 39: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/39.jpg)
Stateless Session Bean Life CycleBefore Closing the Stateless Session Bean lets have a look on the Life Cycle and sequence diagram of Stateless Session Bean
Each method call shown is an invocation from the container to the bean instance.
![Page 40: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/40.jpg)
Sequence diagram for stateless session beans.
![Page 41: Welcome To Enterprise Jave Beans (EJB) Training](https://reader030.fdocuments.us/reader030/viewer/2022033022/56812be6550346895d90644f/html5/thumbnails/41.jpg)
Presented By
Pradeep K Sahu
For Your Patience……