EJB Fundamentals
Download
Report
Transcript EJB Fundamentals
Enterprise JavaBeans:
Fundamentals
Contents
Introduction
Technology Overview
EJB Architecture
EJB Specification
Sample Application
EJB Fundamentals
(c)CDAC(Formerly NCST)
2
Sun’s Definition
EJB architecture is a component architecture
for the development and deployment of
component based distributed business
applications.
Applications written using EJB architecture
are scalable, transactional, and multi-user
secure.
These applications may be write once, and
then deployed on any server platform that
supports the EJB specification.
EJB Fundamentals
(c)CDAC(Formerly NCST)
3
Short Definition
EJB is a server-side component
architecture that simplifies the process
of building enterprise-class distributed
component applications in Java.
EJB provides standard for component
architecture.
EJB Fundamentals
(c)CDAC(Formerly NCST)
4
Enterprise Bean
Server side software components that
can be deployed in distributed multi tier
environment.
They encapsulate business logic of an
application.
Consists of one or more java objects.
EJB Fundamentals
(c)CDAC(Formerly NCST)
5
Types of Beans
Session Bean
Entity Bean
Message driven Bean
EJB Fundamentals
(c)CDAC(Formerly NCST)
6
Session Bean
Session beans model business
processes.
They are like ‘verbs’ because they are
actions.
E.g. billing engine, catalog engine etc:
EJB Fundamentals
(c)CDAC(Formerly NCST)
7
Entity Bean
Entity Bean Models business data.
They are like ‘nouns’ because they are
data objects
E.g. product, an order, an employee
etc:
Session beans typically calls entity
beans to perform business goals.
EJB Fundamentals
(c)CDAC(Formerly NCST)
8
Message Driven Bean
Message driven beans are similar to
session beans.
They are actions.
They are called only when they receive
some message.
E.g. : stock trade message.
EJB Fundamentals
(c)CDAC(Formerly NCST)
9
EJB Architecture
HTML
Client
Presentation
Tier
HTTP
Firewall
Messaging
Client
C/C++
Client
Messaging
CORBA-IIOP
Java Applet
Java Appl
RMI-IIOP
Business
Partner System
Servlet
SOAP,UDDI
WSDL,ebXML
JSP
RMI-IIOP RMI-IIOP
Application Server
EJB Message
Driven Bean
EJB Session
Bean
EJB Session
Bean
EJB Session
Bean
EJB Entity
Bean
EJB Session
Bean
EJB Fundamentals
Web
Server
(c)CDAC(Formerly NCST)
Business
Tier
10
EJB Foundation: Distributed
Objects
Distributed
Object
Client
Remote Interface
Remote Interface
Skeleton
Stub
Network
EJB Fundamentals
(c)CDAC(Formerly NCST)
11
We take a monolithic application and
break it into distributed system with
multiple clients connecting to multiple
servers and databases over network.
What do we need to worry
about now?
EJB Fundamentals
(c)CDAC(Formerly NCST)
12
Services
Remote Method
Invocation
Load Balancing
Transparent Fail Over
Back end integration.
Clustering
Dynamic Re deployment
Object life cycle
Caching
Security
Resource Pooling
System Management
Message Oriented
Middleware
And many more…..
Middleware
EJB Fundamentals
(c)CDAC(Formerly NCST)
13
Explicit Middleware
Transaction API Transaction
Services
Distributed
Object
Client
Remote Interface
Remote
Interface
Security API
Security
Services
Database API
Database
drivers
Skeleton
Stub
Network
EJB Fundamentals
(c)CDAC(Formerly NCST)
14
Example – Bank account obj
Transfer(Acct acc1, Acct acc2,long amt)
//1.Call middleware API to perform security
check.
//2.Call middleware API to start a trans
//3.Call middleware API to load rows from db.
//4.perform trans.
//5.Call middleware API to store rows in db
//6.Call middleware API to end the trans.
EJB Fundamentals
(c)CDAC(Formerly NCST)
15
Explicit Middleware
Difficult to Write.
Difficult to Maintain.
Difficult to Support.
EJB Fundamentals
(c)CDAC(Formerly NCST)
16
Implicit Middleware
Distributed
Client
Object
Remote
Interface
Transaction API Transaction
Request
Interceptor
Remote Interface
Remote
Interface
Skeleton
Stub
Services
Security API
Security
Services
Database API
Database
drivers
Network
EJB Fundamentals
(c)CDAC(Formerly NCST)
17
Example – Bank account obj
Transfer(Acct acc1,Acct acc2,long amt)
//1. Perform trans.(subtract bal from one
account and add to other).
EJB Fundamentals
(c)CDAC(Formerly NCST)
18
Implicit Middleware
Easy to Write.
Easy to Maintain.
Easy to Support.
EJB Fundamentals
(c)CDAC(Formerly NCST)
19
EJB Container
House enterprise bean and makes them
available to the client to invoke them
remotely.
It intercepts the client request and delegates
them to corresponding bean class.
It automatically performs implicit middleware
that the distributed object needs.
EJB object is the physical part of the
container.
EJB Fundamentals
(c)CDAC(Formerly NCST)
20
EJB Component Ingredients
Enterprise Bean Class
Interfaces
Remote and Home interface for remote
access.
Local and Local Home interface for local
access.
Deployment Descriptor.
Vendor Specific files.
EJB Fundamentals
(c)CDAC(Formerly NCST)
21
Enterprise Bean Class
It conforms to a well defined interface.
It contains business implementation
details of our component.
Each bean type has more specific
interface that extends
javax.ejb.EnterpriseBean interface.
Bean class implements the interface
corresponding to the bean type.
EJB Fundamentals
(c)CDAC(Formerly NCST)
22
EJB Object
Client request interceptor.
It duplicates all the business logic
methods that the corresponding bean
class exposes.
Proprietary and specific to each EJB
container.
EJB Fundamentals
(c)CDAC(Formerly NCST)
23
Remote Interface
Interface to request interceptor.
Informs EJB Object auto generator
which methods to clone.
All remote interfaces must derive from
javax.ejb.EJBObject.
EJB remote interfaces must confirm to
RMI rules.
EJB Fundamentals
(c)CDAC(Formerly NCST)
24
Home Object
EJB object factory.
Creates,finds and destroys EJB objects.
Proprietary and specific to each EJB
container.
Home objects implements Home
Interface.
EJB Fundamentals
(c)CDAC(Formerly NCST)
25
Home Interface
EJB Object factory interface.
They define methods for
creating,destroying and finding EJB
Objects.
All home interfaces must extend
javax.ejb.EJBHome.
EJB remote interfaces must confirm to
RMI rules.
EJB Fundamentals
(c)CDAC(Formerly NCST)
26
Local Access
Local objects make enterprise bean calls
fast and efficient.
Local objects implements Local Interface.
Local home objects creates beans fast.
Local home object implements Local Home
interface.
EJB Fundamentals
(c)CDAC(Formerly NCST)
27
Deployment Descriptor
Declare how the container should
perform middleware services for the
EJB component.
In EJB 2.0 deployment descriptor is a
XML file.
Key to implicit middleware.
EJB Fundamentals
(c)CDAC(Formerly NCST)
28
Vendor Specific Files
All vendors have proprietary value
added features.
Include files specific to that vendor.
EJB Fundamentals
(c)CDAC(Formerly NCST)
29
Package
Remote
Interface
Local
Interface
Jar file creator
Enterprise
Bean
Home
Interface
Deployment
Descriptor
Vendor
Specific
EJB Fundamentals
(c)CDAC(Formerly NCST)
EJB jar file
30
Sample Application
My First Bean!
EJB Fundamentals
(c)CDAC(Formerly NCST)
31
Session Bean : FirstBean
package example;
public class FirstBean implements javax.ejb.SessionBean{
private SessionContext ctx;
public void ejbCreate()
{
System.out.println(“ejbCreate()”);
}
public void ejbRemove() {
System.out.println(“ejbRemove()”);
}
public void ejbActivate() {
System.out.println(“ejbActivate()”);
}
EJB Fundamentals
(c)CDAC(Formerly NCST)
32
public void ejbPassivate()
{
System.out.println(“ejbPassivate()”);
}
public void setSessionContext(javax.ejb.SessionContext ctx)
{
this.ctx=ctx;
}
public String first()
{
System.out.println(“first()”);
return “My First Bean”;
}
}
EJB Fundamentals
(c)CDAC(Formerly NCST)
33
Remote Interface : First.java
package example;
public interface First extends javax.ejb.EJBObject
{
public String first() throws java.rmi.RemoteException;
}
EJB Fundamentals
(c)CDAC(Formerly NCST)
34
Home Interface : FirstHome
package example;
public interface FirstHome extends javax.ejb.EJBHome
{
First create() throws java.rmi.RemoteException,
javax.ejb.CreateException;
}
EJB Fundamentals
(c)CDAC(Formerly NCST)
35
Deployment Descriptor
<ejb-jar>
<enterprise-bean>
<session>
<ejb-name>First</ejb-name>
<home>example.FirstHome</home>
<remote>example.First</remote>
<ejb-class>example.FirstBean<ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-bean>
</ejb-jar>
EJB Fundamentals
(c)CDAC(Formerly NCST)
36
Client Application
package example;
import javax.naming.*;
Import java.util.*;
public class FirstClient{
public static void main(String[] arg) throws Exception{
Properties props=System.getProperties();
Context ctx=new InitialContext(props);
Object obj=ctx.llokup(“FirstHome”);
FisrtHome home=(FirstHome)
javax.rmi.RemotePortableObject.narrow
(obj,FirstHome.class);
EJB Fundamentals
(c)CDAC(Formerly NCST)
37
First first=home.create();
System.out.println(first.first());
first.remove();
}
}
EJB Fundamentals
(c)CDAC(Formerly NCST)
38
EJB Object Model
<<interface>>
java.rmi.Remote
<<interface>>
java.io.Serializable
Comes with Java2 platform
<<interface>>
javax.ejb.EJBObject
<<interface>>
Javax.ejb.EJBHome
<<interface>>
javax.ejb.EnterpriseBean
<<interface>>
javax.ejb.SessionBean
Comes with EJB Distribution
<<interface>>
Remote Interface
<<interface>>
Home Interface
Bean Implement
Class
Written by developer
EJB Object
EJB Fundamentals
Home Object
(c)CDAC(Formerly
Generated
by ComponetNCST)
Vendor Tool
39
EJB Container
3: Create a new Home
EJB Object
Interface
Client
1 : Retrieve
Home object
Reference
5: Return EJB
Object Reference
2 : Return
Home object
Reference
6: Invoke Business
Method
Remote
Interface
Home
Object
4: Create a new
EJB Object
EJB
Object
Enterprise
Bean
7: Delegate Request to Bean
JNDI
Naming
Service
EJB Fundamentals
(c)CDAC(Formerly NCST)
40
Advantages of EJB
Helps to write scalable,reliable and secure
applications.
Provides distributed component framework
and hence supports rapid application
development.
Supports application portablility and
reusability across any vendor’s enterprise
middleware services.
It is agreed upon by industry.
EJB Fundamentals
(c)CDAC(Formerly NCST)
41
References
Mastering Enterprise Java Beans
J2EE 1.4 Tutorials
Professional Java Server Programming,
J2EE Edition
EJB Fundamentals
(c)CDAC(Formerly NCST)
42