Softsmith
Open Learning - EJB
21-Nov-2008
1
Enterprise Java Beans
• Introduction
– Application Server
– Java 2 Enterprise Edition
• What is an Enterprise Bean ?
– EJB Properties
– EJB Overview
– Deployment Phase
– Type of beans
• Client access with interfaces
– Remote access
– Local Access
2
Enterprise Java Beans
• Contents of an Enterprise Bean
• EJB Example
• EJB vs MTS
• A few EJB implementations
• What’s new in EJB 2.0
• Bibliography
3
Introduction
• Enterprise Java Beans ( EJB ) is
– a middleware component model for Java and CORBA
– a specification for creating server-side, scalable,
transactional, multi-user and secure enterprise-level
applications
– one of several Java APIs in the Java
• Presented by Sun in the 1999, they are easier
than other technologies as RMI or Corba
4
Introduction
• This is the three level structure for Application
Server
5
Applicaton Server
• Presentation
– HTML Application
– Java Application
• Business Logic
• Data Access
6
Presentation
• HTML • Java
– Generated server-side – Required Java virtual
HTML Machine
– Runs on any Web – More client side power
browser – Runned on a page
– Less client-side power – Security (Applet)
– Launched from a
browser or a
standalone application
7
Business Logic
• Implements the logic of the application defining
all the function that may be used from a client
– Change Business Rules Easily
– Re-use components
– Make complex applications manageable
– Secure Data hiding
8
Data Access
• Utility to access external datas such as
Database or other Web component
• Access other SOA
9
J2EE Application Server
• Java 2 Enterprise Edition standardizes
interfaces for Application Server components
10
What is an Enterprise Bean ?
• Is a server side component written in Java
Language
• Industry standard distribuited component model
• Incorporates the business logic of an application
( the code that implements the purpose of the
application)
• Replicates the table model as objects
11
EJB Properties
• Bean writers need not write
– Remote access Protocols
– Transactional Behaviour
– Threads
– Security
– State Management
– Object life cycle
– Resource pooling
– Persistence
– Native queries execution
12
EJB Overview
13
Deployment Phase
14
Deployment Phase
15
When to use Enterprise bean
• The application must be scalable.It will run on
different machine and their location will remain
transparent to the client
• Transaction requirement
• The application will have lot of different type of
clients
• Multilevel security layer
16
Type of beans
• Session Bean
• Entity Bean
• Message Driven Bean
17
Session Bean
• Represents a single client inside the server
• The client calls the session bean to invoke
methods of an application on the server
• Perform works for its client, hiding the complexity
of interaction with other objects in the server
• Is not shared
• Is not persistent
• When the client stops the session,the bean can
be assigned to another client from the server
• Unique to each client
18
Session Bean
• Stateful session bean
• Stateless session bean
19
Stateful Session Bean
• Contains the state of a single client session:
– Information on the client
– On method called
– Return values
This state is called conversational state and is
not retained when the session ends, also if
the client not removes the bean
- Remembers previous request, and response
of session
20
Stateless Session Bean
• Not maintain a conversational state for a
particular client
• Contains values only for the duration of the
single invocation
• Except during method invocation, all instances
of stateless session bean are equivalent
• Pooled
21
Entity Bean
• Represents a business object in a persistent storage
mechanism such as a relational database
• Usually is a table in the database and each instance of
that entity bean is a row in that table
Properties:
• Persistent
• Allow shared access
• Have primary key
• Have relationship with other entity beans.
• Auto commit.
22
Entity Bean persistent
• Bean managed persistence
• Container managed persistence
23
Bean managed
persistence
• Who write the bean’s code must access the
database and save his own data
• you will have more control over how the entity
bean accesses a database
24
Container managed persistence
• The container save the data
• There is no code in the bean for access the
database
• The container handles all database access
required for the bean
• Links between beans are created using a
structure called abstract schema
• the EJB container transparently and implicitly
manages the persistent state
25
Entity bean’s shared access
• Entity beans can be used by different clients
• It’s important that they work whithin transactions
• The EJB container provides transaction management
• The transaction’s attribute are specified in the bean’s
deployment description
• Concurrency management
26
Entity bean’s primary key
• Each entity bean has a unique object identifier
like a key in a database table
• Each instance represents as Row in table
27
Entity bean’s relationship
• Container managed persistent
– The container performs all the operation to create
relationship
• Bean managed persistent
– The code to perform relations must be written in the
bean
28
Message Driven bean
• Allows applications to process messages
asynchronously
• The messages may be sent by :
– An application client
– Another enterprise bean
– A Web component
– A JMS Client
29
Message Driven bean
• Retain no data or conversational state for a specific
client
• All instances are equivalent, allowing the EJB
container to assign a message to any message-
driven bean instance. The container can pool these
instances.
• The instance variables of the message-driven
bean e can contain some state across the
handling of client messages--for example, a
JMS API connection, an open database
connection, or an object reference to an ejb.
30
Message Driven bean
• A client can’t access directly to a message
driven bean
• When a message arrive, the container gives it to
a message driven bean
• The bean process the message
• The onMessage method may call helper methods,
or it may invoke a session or entity bean to
process the information in the message or to
store it in a database
31
Client access with interfaces
• A client may access a session or an entity bean
only through the methods defined in the bean's
interfaces
• They define the client's view of a bean
• Public business methods declared in Bean
interface’s can be visible to client, to invoke
• Types of access:
– Remote access
– Local access
32
Remote access
• A remote client of an enterprise bean has the
following traits:
– It may run on a different machine and a different Java
virtual machine than the enterprise bean it accesses
(It is not required to run on a different JVM )
– It can be a Web component
– It can be another enterprise bean
– It can be RMI object
33
Remote access
• To create an enterprise bean with remote
access, you must :
– Code a remote interface
• Business methods
– Code a home interface
• Finder methods
• Home methods
• Utility methods (to get home)
34
Remote access example
35
Local access
• A local client has these characteristics
– It must run in the same JVM as the enterprise
bean it accesses
– It may be a Web component or another
enterprise bean
– To the local client, the location of the
enterprise bean it accesses is not transparent
– It is often an entity bean that has a container-
managed relationship with another entity bean
36
Local access
• To create an enterprise bean with local access,
you must :
– Code the local interface
• Bean's business methods
– Code the local home interface
• Life cycle
• Finder methods
• Utility methods
37
Local interfaces
• If an entity bean is the target of a container
managed relationship it MUST have local
interfaces
• An EJB can use local client view only if it is
really guaranteed that other enterprise beans or
clients will only address the bean within a single
JVM
38
Contents of an Enterprise Bean
• Deployment descriptor
– Persistence type
– Transaction attribute
• Enterprise bean class
• Interfaces
• Helper classes
– Exception
– Utility classes
39
EJB Example
• The OnLine Bank
We will take a not completed system to give an idea to
how choose if a component is an entity, session or
message driven bean.
40
EJB Example
Virtual Bank
Security Accounts
Services
Client
41
EJB Example
The example has three component:
– Services: what the client can do in the system such as
see the foreign currency , listed shares or make
operations on his hown account.
– Accounts: a database containing the accounts of all
the clients of the bank with information about
credit,debit,access etc..
– Security: is a subsystem that receives all the alarm
caused from wrong access and performs action about
the situation
( calls police and stops operation of that client
keeping information about him )
42
EJB Example
• In this example is easy to create an EJB structure.
– Client will have a web page at client side to insert values and
connect the system.This will be done using JSP ( Java Servlet
Pages )
– Services will be a Statefull Session Bean and it will be different
for each client connecting the system mantaining data about the
client connected.
– Accounts will be formed by an Entity Bean for each account in
the system with a code-account as primary key.
– Security will be a Message driven bean and will be called only
from container if some operation are abnormal for result or the
autentification for the same client fails too much times.
43
A few EJB implementations
• WebLogic
• Bluestone
• Novera
• Persistence
• Oracle AS
• Oracle8i
44
What’s new in EJB 2.0
• Released On April 26, 2001
• Integration with JavaTM Message Service (JMS) --
Asynchronous Capabilities Streamline Systems
– Send asynchronous messages via the JMS API
• Container-Managed Persistence (CMP) -- Simplifying
and Expediting Application Development
– Used to isolate the application developer from the physical
database schema
– Introduces for the first time a portable query language, based on
the abstract schema
– No need to worry about data access code
45
What’s new in EJB 2.0
• Local Interfaces -- Streamlining Calls Between Local
Beans
– The local interface may be defined for a bean during
development, to allow streamlined calls to the bean if a caller is
in the same container
– Uses when Client and bean reside in same JVM
• Inter-Server Interoperability -- Enabling Heterogeneous
Environments
– Takes the benefit of cross-server application portability
– Able to deploy the EJB technology-based application across a
heterogeneous environment mixing application servers from
different vendors
46
The EJB architecture
• Consists of:
– An EJB server
– EJB containers that run within the server
– Home objects
– Remote EJBObjects
– Enterprise Beans
– EJB clients
– Auxiliary systems like
• Java Naming and Directory Interface (JNDI)
• Java Transaction Service (JTS)
• Security services
• Threading
• Pooling
47
The EJB architecture
48
Stateful session bean’s
life cycle
• The client invoke the create method
• The EJB container :
– Instantiates the bean
– Invokes the setSessionContext
– Invokes ejbCreate
• The bean is ready
• Business methods ready to be called
49
Stateful session bean’s
life cycle
• While in the ready state
– EJB container may passivate the bean moving it from
memory to secondary storage
– A client may invoke a business method
– EJB container may activate a bean,moving it back to
the ready stage, and then calls the bean's ejbActivate
method
– A client may invoke the remove method and the
container calls the bean's ejbRemove method
– Client cannot invoke passivate
50
Stateful session bean’s
life cycle
51
Stateless session bean’s
life cycle
• The client invoke the create method
• The EJB container :
– Instantiates the bean
– Invokes the setSessionContext
– Invokes ejbCreate
• The bean is ready
52
Stateless session bean’s
life cycle
• While in the ready state
– A client may invoke a business method
– A client may invoke the remove method and the
container calls the bean's ejbRemove method
– It’s never passivate
– It’s can be pooled
53
Stateless session bean’s
life cycle
54
Entity bean’s life cycle
• The EJB container :
– Creates the instance
– Calls the setEntityContext
• The entity bean moves to a pool of available
instances
55
Entity bean’s life cycle
• While in the pool :
– Instance is not associated with any particular object
identity
– All instances in the pool are identical
– EJB container may assign an identity to an instance
when moving it to the ready stage invoking the
ejbActivate method
– A client may invoke the create method
• EJB container calls ejbCreate and ejbPostCreate
– EJB container may remove the instance invoking
unsetEntityContext
– Same bean instance (row) shared by all client
56
Entity bean’s life cycle
• While in the ready state :
– A client may invoke entity bean's business methods
– A client may invoke the remove method
• EJB container calls the ejbRemove method
– EJB container may invoke the ejbPassivate method
57
Entity bean’s life cycle
58
Message driven bean’s
life cycle
• EJB container creates a pool of message-driven
bean instances
• For each instance, the EJB container instantiates
the bean :
– It calls the setMessageDrivenContext
– It calls the instance's ejbCreate
• Like a stateless session bean,it’s never passivated,
It has only two states:
– Nonexistent
– Ready to receive messages.
– is only a bean class – no interfaces
59
Message driven bean’s
life cycle
• While in the ready state :
– EJB container may call onMessage
– EJB container may call the ejbRemove
60
Message driven bean’s
life cycle
61