Transcript Document

7/17/2015
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
7/17/2015
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
7/17/2015
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 enterpriselevel applications
• Presented by Sun in the 1999, they are
easier than other technologies as RMI or
Corba
7/17/2015
4
Introduction
• This is the three level structure for
Application Server
7/17/2015
5
Applicaton Server
• Presentation
– HTML Application
– Java Application
• Business Logic
• Data Access
7/17/2015
6
Presentation
• HTML
– Generated serverside HTML
– Runs on any Web
browser
– Less client-side
power
7/17/2015
• Java
– Required Java
virtual Machine
– More client side
power
– Runned on a page
– 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
7/17/2015
8
Data Access
• Utility to access external datas such as
Database or other Web component
7/17/2015
9
J2EE Application Server
• Java 2 Enterprise Edition standardizes
interfaces for Application Server components
7/17/2015
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)
7/17/2015
11
EJB Properties
• Bean writers need not write
–
–
–
–
–
–
–
–
Remote access Protocols
Transactional Behaviour
Threads
Security
State Management
Object life cycle
Resource pooling
Persistence
7/17/2015
12
EJB Overview
7/17/2015
13
Deployment Phase
7/17/2015
14
Deployment Phase
7/17/2015
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
7/17/2015
16
Type of beans
•
•
•
Session Bean
Entity Bean
Message Driven Bean
7/17/2015
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
7/17/2015
18
Session Bean
•
Stateful session bean
•
Stateless session bean
7/17/2015
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
7/17/2015
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
7/17/2015
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:
•
•
•
•
7/17/2015
Persistent
Allow shared access
Have primary key
Have relationship with other entity beans.
22
Entity Bean persistent
•
Bean managed persistence
•
Container managed persistence
7/17/2015
23
Bean managed
persistence
• Who write the bean’s code must access the
database and save his own data
7/17/2015
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
7/17/2015
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
7/17/2015
26
Entity bean’s primary key
• Each entity bean has a unique object
identifier like a key in a database table
7/17/2015
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
7/17/2015
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
7/17/2015
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 to allow
streams of messages to be processed
concurrently
• Can process messages from multiple clients
7/17/2015
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
7/17/2015
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
• Types of access:
– Remote access
– Local access
7/17/2015
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
7/17/2015
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
7/17/2015
34
Remote access example
7/17/2015
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 containermanaged relationship with another entity bean
7/17/2015
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
7/17/2015
37
Local interfaces
• If an entity bean is the target of a container
managed relationship it MUST have local
interfaces
7/17/2015
38
Contents of an Enterprise Bean
• Deployment descriptor
– Persistence type
– Transaction attribute
• Enterprise bean class
• Interfaces
• Helper classes
– Exception
– Utility classes
7/17/2015
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.
7/17/2015
40
EJB Example
Virtual Bank
Security
Accounts
Services
Client
7/17/2015
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 )
7/17/2015
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.
7/17/2015
43
EJB vs MTS
• Microsoft Transaction Server is based on the
Component Object Model (COM) which is the
middleware component model for Windows
NT
• MTS can be defined as a component-based
programming model
7/17/2015
44
EJB vs MTS
Analogies
• Implement business logic for Application
Server components
• Have a Server and a container ( for MTS
called MTS Executive )
• Similar architecture in both models
• A client invokes wrapped method
7/17/2015
45
EJB vs MTS
Difference
• EJB
– Component instance
are pooled
– Don’t support
heterogeneous
transactions
– Portability accross
multiple platforms
using Java platform
7/17/2015
• MTS
– Component is not
created until the call
from a client reaches
the container
– Support
heterogeneous
transactions
– Portability only on
Windows NT
46
EJB vs MTS
Difference
• EJB
– Invoked by clients
using RMI
– Has both
persistent and
non-persistent
components
7/17/2015
• MTS
– Invoked by clients
using DCOM or
through local COM
calls
– Components are
not persistent,
even though they
may contain
information
47
A few EJB implementations
• WebLogic
• Bluestone
• Novera
• Persistence
• Oracle AS
• Oracle8i
7/17/2015
48
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
7/17/2015
49
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
• 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
7/17/2015
50
Bibliography
• The J2EE Tutorial
– http://java.sun.com/j2ee/tutorial/1_3fcs/doc/EJBConcepts.html
• Meeting about Application servers
– http://www.phxjug.org/meetings/silverstream/sld001.htm
• Developing Enterprise components
– http://spectral.mscs.mu.edu/EJB20001113/index.html
• A detailed Comparison of EJB & MTS models
– http://members.tripod.com/gsraj/misc/ejbmts/ejbmtscomp.ht
ml
7/17/2015
51
Bibliography
• What's new in the Enterprise JavaBeansTM 2.0
Specification?
– http://java.sun.com/products/ejb/2.0.html
• Introduction to Enterprise JavaBeans
– http://cosmos.inesc.pt/~a01/javacourses/ejb/
• Programming WebLogic Enterprise JavaBeans
– http://e-docs.bea.com/wls/docs61/ejb/index.html
7/17/2015
52
The MTS architecture
• Is made up of:
– The MTS Executive (mtxex.dll)
– The Factory Wrappers and Context Wrappers for
each component
– The MTS Server Component
– MTS clients
– Auxiliary systems like
• COM runtime services,
• Service Control Manager (SCM)
• The Microsoft Distributed Transaction Coordinator (MSDTC)
• The Microsoft Message Queue (MSMQ)
• The COM-Transaction Integrator (COM-TI)
7/17/2015
53
The MTS architecture
7/17/2015
54
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
7/17/2015
55
The EJB architecture
7/17/2015
56
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
7/17/2015
57
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
7/17/2015
58
Stateful session bean’s
life cycle
7/17/2015
59
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
7/17/2015
60
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
7/17/2015
61
Stateless session bean’s
life cycle
7/17/2015
62
Entity bean’s life cycle
• The EJB container :
– Creates the instance
– Calls the setEntityContext
• The entity bean moves to a pool of available
instances
7/17/2015
63
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
7/17/2015
64
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
7/17/2015
65
Entity bean’s life cycle
7/17/2015
66
Message driven bean’s
life cycle
• EJB container creates a pool of messagedriven 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.
7/17/2015
67
Message driven bean’s
life cycle
• While in the ready state :
– EJB container may call onMessage
– EJB container may call the ejbRemove
7/17/2015
68
Message driven bean’s
life cycle
7/17/2015
69
Abstract schema
• Part of an entity bean's deployment
descriptor
• Defines the bean's persistent fields and
relationships.The term abstract distinguishes
this schema from the physical schema of the
underlying data store
• You specify the name of an abstract schema
in the deployment descriptor
7/17/2015
70
Example of Abstract schema
7/17/2015
71
Abstract schema
• Persistent fields
– Are stored in the underlying data store
– Constitute the state of the bean. At runtime, the
EJB container automatically synchronizes this
state with the database
– During deployment, the container
• Maps the entity bean to a database table
• Maps the persistent fields to the table's columns
7/17/2015
72
Abstract schema
• Relationship fields
– It’s like a foreign key in a database table.It
identifies a related bean
– Like a persistent field, a relationship field is virtual
and is defined in the enterprise bean class with
access methods
– Unlike a persistent field, a relationship field does
not represent the bean's state
7/17/2015
73
Abstract schema
• Multiplicity in Container-Managed
Relationships
– One-to-one: Each entity bean instance is related
to a single instance of another entity bean
– One-to-many: An entity bean instance may be
related to multiple instances of the other entity
bean
– Many-to-one: Multiple instances of an entity bean
may be related to a single instance of the other
entity bean
– Many-to-many: The entity bean instances may be
related to multiple instances of each other
7/17/2015
74
Abstract schema
• Direction in Container-Managed
Relationships
– Bidirectional relationship: each entity bean has a
relationship field that refers to the other bean.
Through the relationship field, an entity bean's
code can access its related object
– Unidirectional relationship: only one entity bean
has a relationship field that refers to the other
7/17/2015
75
EJB 3.0
This section based on
Mastering EJB 3.0 4th Ed
7/17/2015
76
EJB 3.0
• Key issues for distributed systems
–
–
–
–
–
–
–
Remote Method Invocation
Load Balancing
Transparent failover
Back-end integration to legacy systems
Transactions
Clustering (state replication across servers)
Dynamic redeployment (upgrade while running)
7/17/2015
77
EJB 3.0
• More key issues
–
–
–
–
–
–
–
Clean shutdown
Logging & auditing
Systems management
Threading
Message-oriented middleware
Component lifecycle
Resource pooling
7/17/2015
78
EJB 3.0
• Yet more issues
– Security
– Caching
– Etc., etc.
7/17/2015
79
EJB 3.0
• All of these can be thought of as middleware
services
• Developer of distributed app shouldn’t have
to worry about them
– Should concentrate on business logic
– Much too expensive to build from scratch
– Distributed app should be portable across
middleware service providers
7/17/2015
80
EJB 3.0
• EJB spec defines standard interfaces
between distributed components & their
containers
7/17/2015
81
EJB 3.0
• Advantages
– Industry standard
• Vendors design containers to EJB specs
– Portability possible across containers
– RAD capable because services provided
by container
7/17/2015
82
EJB 3.0
• What’s an EJB?
– Server-side component encapsulating application functionality
•
•
•
•
Business logic
DB access
Integrate with other legacy systems
Serve multiple clients
–
–
–
–
–
7/17/2015
Browser
Desktop apps
Other EJBs
Web app components (e.g., Servlets)
Web Service clients
83
EJB 3.0
• How do they work?
– EJB can be located anywhere, usually on another
machine
– Use RMI-IIOP for remote invocation of methods
(P. 15)
– Location transparency
• Client thinks remot EJB is local
– Run inside EJB container
• Application servers
7/17/2015
84
EJB 3.0
• Who makes containers?
– Most of the usual enterprise suspects
• BEA, IBM, Red Hat (JBOSS), Sun, Oracle
• Closely related to web services
– P. 29
7/17/2015
85
EJB 3.0
• EJB 2.1 was NASTY!!
– HelloWorld EJB 2.1 (pp. 40-49)
– Many disappointed enterprise developers
• Vastly simplified in EJB 3.0
– HelloWorld EJB 3.0 (pp. 83-85)
– Many ‘once burned twice shy’ developers
• Sun’s dilemma:
– ‘If we simplify it, will they resume coding EJBs?’
7/17/2015
86
EJB 3.0
• EJB best practices
• For appropriate use only
–
–
–
–
–
–
Remoting is required
Distributed transactions required
Component security required
Persistence required
Legacy system integration
Scalability required
7/17/2015
87
EJB 3.0
• If your application components don’t
need to be distributed across servers,
avoid using distributed components like
EJBs
7/17/2015
88
EJB 3.0
This section based on:
J2EE Development Without EJB
7/17/2015
89
EJB 3.0
• Written by a ‘once burned twice shy’ EJB
developer
• Observations apply to EJB 2.1 (and earlier)
experiences
– EJB 3.0 spec in early stages when book written
7/17/2015
90
EJB 3.0
• Basic thesis is EJBs….
–
–
–
–
Rarely necessary for web-based applications
Commonly overused
Symptom of over-engineering
Can obtain most of needed EJB services via other
programming techniques using lightweight
containers (e.g., Spring)
• Java EE & Java SE
• Aspect-oriented programming
• Dynamic proxies
7/17/2015
91
EJB 3.0
• He’s not alone
• Many other enterprise architects and
developers have critized EJBs since early
2000s
• Martin Fowler’s Law of Distributed Objects
‘Don’t do it!!’
7/17/2015
92
EJB 3.0
• Some criticisms
– Too complex
• Specifications getting more complex
• EJB 3.0 tries to address this
– Unit testing hard to do
• Have to isolate app from container
• If something broken, is it container related or app
related?
7/17/2015
93
EJB 3.0
– Other technologies (AOP) get the job done
more easily
– Entity beans are a flop
• EJB 3.0 doesn’t upgrade entity beans
• Left to wither on the Java EE vine
• Persistence API tries to address this
7/17/2015
94
EJB 3.0
• Metadata (a la .NET) are better than
descriptor files
– Annotations designed to address this
• Only truly unique service provided by EJB is
remote access to a component
• Java EE provides other services already
– JNDI, JTA, JCA, resource pooling, etc.
7/17/2015
95
EJB 3.0
• EJBs remain best choice for apps that
genuinely need object distribution or use
IIOP protocol
• EJBs also pretty good for apps based around
asynchronous messaging
– Message-drive beans pretty simple
7/17/2015
96
EJB 3.0
• Financial services middleware likely good
place for EJB-driven apps
• Argues that EJBs are declining technology &
will be legacy within 3 years
• Doesn’t think EJB 3.0 will make much of a
difference
7/17/2015
97
EJB 3.0
• Advocates use of lightweight containers
like Spring….
• Oh btw, author is co-founder of Spring
framework!
• Bias is always an issue!
7/17/2015
98
EJB 3.0
• What’s an enterprise developer to do?
• Distributed systems a holy grail of system
architecture & deployment since early 90s
– CORBA initiative began in 91
– Web Services are current frontier
• IT profession still learning when & how to do
distributed systems
7/17/2015
99
EJB 3.0
References
Master Enterprise JavaBeans 3.0, 4th Ed, Sriganesh
et. Al., 2006
J2EE Development Without EJB, Johnson, 2004
7/17/2015
100