SlideShare a Scribd company logo
1 of 56
Download to read offline
Enterprise JavaBeans (EJB 3.x)
Fahad R. Golra
ECE Paris Ecole d'Ingénieurs - FRANCE
Lecture 8 - Enterprise Java
Beans (EJB)
• Introduction to EJBs
• Types of EJBs
• Session Beans
• Message Driven Beans
• Transaction Management
2 JEE - Enterprise Java Beans
3 Layers of Information System
3 JEE - Enterprise Java Beans
presentation
layer
application logic
layer
resource management
layer
Client
informationsystem
EJB
JSP JSF
Servlets
JPA
Database
Java EE Server
• The runtime portion of a Java EE product. A Java EE server
provides EJB and web containers.
4 JEE - Enterprise Java Beans
When to use EJB?
• If the application needs
• to be scalable
• a transactional context
• diversity of clients
5 JEE - Enterprise Java Beans
Why to use EJBs
• Encapsulate business logic
• multi-tier architecture
• Remote access
• apps on different servers can access them
• Simplicity
• simpler than other remote object systems
• Broad vendor support
• JBoss, Oracle AS, WebLogic, WepSphere
• Scalability
• support for clustering, load-balancing and failover
6 JEE - Enterprise Java Beans
Why EJB 3.x
• Network connections between the clients and the
EJBs
• Naming services (JNDI)
• Transactions
• Persistence and the management of DB pool of
connections
• Distribution
• Security
• Management of component’s life cycle
7 JEE - Enterprise Java Beans
Types of EJB
8
EJB
Message-Driven
Session
Entity
(pruned)
[JPA]
StatelessStateful
Container
Managed
Persistence
Bean
Managed
Persistence
Singleton
Bean Type Annotation
Session Bean Performs a task for a client; optionally, may implement
a web service
Message-
driven Bean
Acts as a listener for a particular messaging type,
such as the Java Message Service API
Stateless Session Beans
• Used when
• The bean's state has no data for a specific client.
• In a single method invocation, the bean performs a
generic task for all clients. For example, you might
use a stateless session bean to send an email that
confirms an online order.
• The bean implements a web service.
9 JEE - Enterprise Java Beans
Stateless Session Beans
10 JEE - Enterprise Java Beans
Java EE Server
EJB Container
Stateless Bean Pool
Bean
Instance
Bean
Instance
Bean
Instance
client Random
A random bean instance is selected from the pool
Stateful Session Beans
• Used when the following conditions are true
• The bean's state represents the interaction between
the bean and a specific client.
• The bean needs to hold information about the client
across method invocations.
• The bean mediates between the client and the other
components of the application, presenting a
simplified view to the client.
• Behind the scenes, the bean manages the work
flow of several enterprise beans.
11 JEE - Enterprise Java Beans
Stateful Session Beans
12 JEE - Enterprise Java Beans
Java EE Server
EJB Container
Bean
Instance
Bean
Instance
Bean
Instance
client C
client B
client A
One bean instance per client
Singleton Session Beans
• They are used when
• State needs to be shared across the application.
• A single enterprise bean needs to be accessed by
multiple threads concurrently.
• The application needs an enterprise bean to
perform tasks upon application startup and
shutdown.
• The bean implements a web service.
13 JEE - Enterprise Java Beans
Singleton Session Beans
14 JEE - Enterprise Java Beans
Java EE Server
EJB Container
Bean
Instance
client C
client B
client A
One bean instance per application server instance
Category Related Annotations
15 JEE - Enterprise Java Beans
Bean Type Annotation
Session Bean @Stateless
@Stateful
@Singleton
Message-driven Bean @MessageDriven
JPA Entities @Entity*
@EntityManager*
Contents of EJB
• Enterprise bean class:
• business methods of the enterprise bean
• any lifecycle callback methods.
• Business interfaces:
• define the business methods
• not required if the enterprise bean exposes a local,
no-interface view
• Helper classes:
• other classes needed by the enterprise bean class,
such as exception and utility classes.
16 JEE - Enterprise Java Beans
Remote & Local Access
17 JEE - Enterprise Java Beans
presentation
layer
application logic
layer
resource management
layer
Client
informationsystem
EJB A
JSP JSF
Servlets
JPA
DatabaseJava EE Server
EJB B
Desktop app
Legend:
Local client
Remote client
Access Mode Annotations
18 JEE - Enterprise Java Beans
Bean Type Annotation
Session Bean @Local
@Remote
@LocalBean*
@WebService
Message-driven Bean @WebService
JPA Entities N/A
Remote & Local Access
• Whether to allow local or remote access depends on
the following factors.
• Tight or loose couple of related beans
• Type of client: web components on the same server
or application clients, etc.
• Component Distribution: A scalable server on
multiple servers
• Performance: Remote calls may be slower than
local calls. Distributed computing on different
servers for performance.
19 JEE - Enterprise Java Beans
EJB Business Interfaces
• Local Interface
@Local
public interface MyStatelessBeanLocal {
String sayHello(String name);
}
• Remote Interface
@Remote
public interface MyStatelessBeanRemote {
String sayHello(String name);
}
20
Stateless Session Beans
• Each invocation of a stateless business method is
independent from previous invocations
• Because stateless session beans are "stateless" they
tend to process requests faster and use less
resources
• All instances are equivalent – the EJB container can
assign a pooled stateless bean instance to any client,
improving scalability
21 JEE - Enterprise Java Beans
Stateless session bean lifecycle
22 JEE - Enterprise Java Beans
NON
EXISTENT
READY
• Create new bean instance
• DI on bean, if any
• @PostConstruct, if any
• @PreDestroy, if any
Client
DI or JNDI lookup
Instances are removed automatically from the pool by the container
Example Hello Bean (Stateless)
@Stateless
@Local(MyStatelessBeanLocal.class)
@Remote(MyStatelessBeanRemote.class)
public class MyStatelessBean implements MyStatelessBeanRemote,
MyStatelessBeanLocal {
public MyStatelessBean() {
// TODO Auto-generated constructor stub
}
@Override
public String sayHello(String name) {
return "hello, " + name;
}
}
23 JEE - Enterprise Java Beans
JNDI Lookup
• Clients find the bean via JNDI
• Client Java code doesn’t even know the machine on which the
bean resides
• Clients use the bean like a normal POJO
• But arguments and return values are sent across network ︎
So, custom classes should be Serializable
InitialContext context = new InitialContext();
InterfaceName bean =(InterfaceName)context.lookup("JNDI- Name");
• jndi.properties
• ︎Text file in classpath; gives remote URL and other info
24 JEE - Enterprise Java Beans
Accessing Local EJB
• Dependency Injection
@EJB
MyStatelessBeanLocal myDIBeanLocal;
• JNDI Lookup
Hashtable jndiProperties = new Hashtable();
jndiProperties.put(Context.URL_PKG_PREFIXES,
"org.jboss.ejb.client.naming");
Context context = new InitialContext(jndiProperties);
MyStatelessBeanLocal myJNDIBeanLocal = (MyStatelessBeanLocal)
context.lookup(“java:module/MyStatelessBean!
com.ece.jee.MyStatelessBeanLocal”);
• Clients do not use the new operator to obtain a new instance
25 JEE - Enterprise Java Beans
Accessing Remote EJB
• Dependency Injection
@EJB
MyStatelessBeanRemote myDIBeanRemote;
• JNDI Lookup
Hashtable jndiProperties = new Hashtable();
jndiProperties.put(Context.URL_PKG_PREFIXES,
"org.jboss.ejb.client.naming");
Context context = new InitialContext(jndiProperties);
MyStatelessBeanLocal myJNDIBeanLocal = (MyStatelessBeanLocal)
context.lookup(“java:module/MyStatelessBean!
com.ece.jee.MyStatelessBeanLocal”);
• Clients do not use the new operator to obtain a new instance
26 JEE - Enterprise Java Beans
Portable JNDI Syntax
• java:global
• JNDI namespace for remote EJBs
java:global[/application name]/module name /enterprise bean name[/
interface name ]
• java:module
• JNDI namespace for local EJBs within the same module.
java:module/enterprise bean name/[interface name]
• java:app
• JNDI namespace is used to look up local EJBs packaged within the
same application.
java:app[/module name]/enterprise bean name [/interface name]
27 JEE - Enterprise Java Beans
Stateful Session Beans
• POJOs
• Instance of the Bean relates to a specific client (in memory while
he/she is connected)
• Expires in case of inactivity (similar to session in Servlet/Jsp)
• Ordinary Java classes; no special interfaces or parent classes. 

• Local or remote access
• Can be accessed either on local app server or remote app server
• Session Expiry
• ︎ The Session expires after the method annotated with
@Remove is executed
• Session can also expire in case of a time-out
28 JEE - Enterprise Java Beans
Stateful session bean lifecycle
29 JEE - Enterprise Java Beans
NON
EXISTENT
READY PASSIVE
• Create new bean instance
• DI on bean, if any
• @PostConstruct, if any
Before instance passivation
• @PrePassivate, if any
After instance activation
• @PostActivate, if any
• @Remove*
• @PreDestroy, if any
Client
DI or JNDI lookup
* Method called by the client code, other methods are called by container
Callback method annotations
@PostConstruct
public void initialize() { ... at Bean’s initialization ... }
@PreDestroy
• public void destroy() { ... destruction of Bean ... }
@PrePassivate //only for Stateful beans
public void beforeSwap() { ... to do before Bean is passivated ... }
@PostActivate //only for Stateful beans
public void afterSwap() { ... to do after Bean is activated ... }
30 JEE - Enterprise Java Beans
@Remove
• Container does not manage a pool for Stateful EJBs
• If the instance is not removed it stays in the memory
• A timeout from the server destroys the bean instance
from READ or PASSIVE state
• A method with @Remove annotation is used to
manage the destruction of instance
@Remove
public void destroy(){
}
31 JEE - Enterprise Java Beans
Singleton Session Beans
• Only one instance is created per bean
• All clients use the same instance
• @Startup loads it, when server starts
• Concurrency can be managed by two ways
• Container Managed Concurrency
• Bean Managed Concurrency
• Bean Concurrency
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
public class MySingleton {
Use synchronised, volatile, etc.
32 JEE - Enterprise Java Beans
Container Managed Concurrency
• Uses READ and WRITE locks
• WRITE lock: No other READ or WRITE method can be
executed concurrently
• READ lock: Only READ lock methods can be executed
concurrently
• Default concurrency management is Container
• Default lock for all methods is WRITE lock
33 JEE - Enterprise Java Beans
Container Managed Concurrency
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
public class MySingleton {
@Lock(LockType.WRITE)
public void myMethod1() {}
@Lock(LockType.READ)
public void myMethod2() {}
}
34 JEE - Enterprise Java Beans
Singleton session bean lifecycle
35 JEE - Enterprise Java Beans
NON
EXISTENT
READY
• @Startup, create new bean instance
• DI on bean, if any
• @PostConstruct, if any
• @PreDestroy, if any
EJB Container
EJB and Web Services
• A client can access a JavaEE application through
• JAX-WS web service
• Business methods of EJB
@Stateless
@WebService
public class HelloServiceBean {
private final String message = "Hello, ";
public void HelloServiceBean() {
}
@WebMethod
public String sayHello(String name) {
return message + name + ".";
}
}
36 JEE - Enterprise Java Beans
Message-Driven Vs Stateless Beans
• Resemblances
• Retain no data or conversational state for a specific
client.
• All instances are equivalent. EJB container can
• assign a message to any message-driven bean
instance
• pool these instances to allow streams of
messages to be processed concurrently
• A single message-driven bean can process
messages from multiple clients.
37 JEE - Enterprise Java Beans
Message-Driven Vs Stateless Beans
• Differences
• clients do not access message-driven beans
through interfaces
• contain some state across the handling of client
messages,
• JMS API connection, an open database
connection, etc.
• client access through JMS
• by sending messages to the message
destination for which the message-driven bean
class is the MessageListener.
38 JEE - Enterprise Java Beans
Message Driven Bean
• They have the following characteristics
• They execute upon receipt of a single client
message.
• They are invoked asynchronously.
• They are relatively short-lived.
• They do not represent directly shared data in the
database, but they can access and update this data.
• They can be transaction-aware.
• They are stateless.
39 JEE - Enterprise Java Beans
Message-driven bean lifecycle
40 JEE - Enterprise Java Beans
NON
EXISTENT
READY
• DI on bean, if any
• Create new bean instance
• @PostConstruct, if any
• @PreDestroy, if any
• Destroy the bean instance
• onMessage
Message-driven bean
• JMS (java.sun.com/jms)
• Two mothers of communication
• Queue : Thread of discussion (one consumer)
• Topic : Topic of discussion (diffusion)
• ConnectionFactory : Factory of connections towards queue/topic
• Connection : connection towards queue/topic
• Session :
• Creation of an sender and of a receiver ︎
• Can be transactional
41 JEE - Enterprise Java Beans
Message Driven Bean
@MessageDriven(activationConfig ={
@ActivationConfigProperty( propertyName = "destination",
propertyValue = "topic_ece"),
@ActivationConfigProperty( propertyName = "destinationType",
propertyValue = "javax.jms.Topic")})
public class Mdb implements MessageListener {
public void onMessage(Message inMessage) {
System.out.println(((TextMessage)msg).getText());
}
}
42
Message Driven Bean (Sender)
@Resource(name="rigolo", mappedName="topic_rigolo")
Topic topic;

@Resource(name="factory", mappedName="JTCF")
TopicConnectionFactory factory;

TopicSession session;

TopicPublisher sender;
public void publish(String value) {

TopicConnection tc = factory.createTopicConnection();
session = tc.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);
sender = session.createPublisher(topic);
TextMessage msg = session.createTextMessage();
msg.setText("MDB: " + value);
sender.publish(msg);
}
43
Transaction Management
• Business Transaction
• Interaction in real world
• Usually between enterprise & person or between enterprises
• Information processing that is divided into individual,
indivisible operations, called transactions
• Performs function on (shared) database
44 JEE - Enterprise Java Beans
The ACID Properties
• A set of properties that guarantee that transactions
are processed reliably
• Atomicity
• Consistency
• Isolation
• Durability
45 JEE - Enterprise Java Beans
Atomicity
• All (commit) or nothing (abort)
• "all or nothing": if one part of the transaction fails, the
entire transaction fails
• Example: transfer money between two bank accounts
• Must handle situations including power failures,
errors, and crashes
46 JEE - Enterprise Java Beans
Consistency
• Each transaction takes valid states to valid states:
• Satisfy integrity constraints, triggers
• Sometimes the only notion of “valid” state is “a state
that could have been produced by executing a
sequence of transactions
47 JEE - Enterprise Java Beans
Isolation
• Each transaction behaves as if it were executed in
isolation at some instant in time
• AKA Serializability
• Ensures that the concurrent execution of transactions
results in a system state that would be obtained if
transactions were executed serially
• Consistency + Isolation implies the data remains
consistent even when multiple transaction programs
execute concurrently
48 JEE - Enterprise Java Beans
Durability
• The effect of a committed transaction will not be lost
• Even in the event of power loss, crashes, or errors
• So data must be on stable storage before commit
• Usually done with a log (or journal) that must be
forced before commit and used in case of crash
recovery
49 JEE - Enterprise Java Beans
Transactions
• There are two types of transactions
• Local Transactions
• They span only on a single resource
• Global Transactions (JTA Transactions)
• They span on multiple resources
• Default transaction in Java EE
• Two management styles
• Container managed transactions (default)
• Bean managed transactions
50 JEE - Enterprise Java Beans
Management Mode Annotations
51 JEE - Enterprise Java Beans
Bean Type Annotation
Transactions @TransactionManagement (CONTAINER)
@TransactionManagement (BEAN)
Security @RunAs()
@RolesAllowed
Bean Managed Transactions
• Manually manage the transaction
@TransactionManagement(TransactionManagementType.BEAN)
public class MyBean {
@Resource
private UserTransaction tx;
public void myMethod() {
try {
tx.begin();
methodcall1();
methodcall2();
methodcall3();
tx.commit();
} catch (Exception e) {
e.printStackTrace();}
}
}
52 JEE - Enterprise Java Beans
Contrainer Managed Transactions
• The start and stop of transactions is managed by
container
@TransactionManagement(TransactionManagementType.CONTAINER)
public class MyTester {
@TransactionAttribute(TransactionAttributeType.MANDATORY)
public void myMethod() {
methodcall1();
methodcall2();
methodcall3();
}
}
53 JEE - Enterprise Java Beans
Transaction Attributes
• REQUIRED
• Client in transaction: uses transaction
• Client without transaction: creates new transaction
• REQUIRES_NEW
• Client in transaction: creates new transaction
• Client without transaction: creates new transaction
• MANDATORY
• Client in transaction: uses transaction
• Client without transaction: throws exception
54 JEE - Enterprise Java Beans
Transaction Attributes
• NEVER
• Client in transaction: throws exception
• Client without transaction: without a transaction
• SUPPORTS
• Client in transaction: uses transaction
• Client without transaction: without a transaction
• NOT_SUPPORTED
• Client in transaction: without a transaction
• Client without transaction: without a transaction
55 JEE - Enterprise Java Beans
56 Introduction to Java Platform, Enterprise Edition

More Related Content

What's hot

Hibernate Presentation
Hibernate  PresentationHibernate  Presentation
Hibernate Presentation
guest11106b
 
jpa-hibernate-presentation
jpa-hibernate-presentationjpa-hibernate-presentation
jpa-hibernate-presentation
John Slick
 

What's hot (20)

Introduction to spring boot
Introduction to spring bootIntroduction to spring boot
Introduction to spring boot
 
Java IO
Java IOJava IO
Java IO
 
Remote Method Invocation (RMI)
Remote Method Invocation (RMI)Remote Method Invocation (RMI)
Remote Method Invocation (RMI)
 
Jdbc ppt
Jdbc pptJdbc ppt
Jdbc ppt
 
Broadcast Receiver
Broadcast ReceiverBroadcast Receiver
Broadcast Receiver
 
Java and XML
Java and XMLJava and XML
Java and XML
 
Enterprise Java Beans - EJB
Enterprise Java Beans - EJBEnterprise Java Beans - EJB
Enterprise Java Beans - EJB
 
Hibernate Presentation
Hibernate  PresentationHibernate  Presentation
Hibernate Presentation
 
Spring Data JPA
Spring Data JPASpring Data JPA
Spring Data JPA
 
Android activity lifecycle
Android activity lifecycleAndroid activity lifecycle
Android activity lifecycle
 
Enterprise JavaBeans(EJB)
Enterprise JavaBeans(EJB)Enterprise JavaBeans(EJB)
Enterprise JavaBeans(EJB)
 
enterprise java bean
enterprise java beanenterprise java bean
enterprise java bean
 
jpa-hibernate-presentation
jpa-hibernate-presentationjpa-hibernate-presentation
jpa-hibernate-presentation
 
Characteristics of oop
Characteristics of oopCharacteristics of oop
Characteristics of oop
 
Introduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examplesIntroduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examples
 
Jdbc architecture and driver types ppt
Jdbc architecture and driver types pptJdbc architecture and driver types ppt
Jdbc architecture and driver types ppt
 
C# Access modifiers
C# Access modifiersC# Access modifiers
C# Access modifiers
 
Java 8 Lambda Expressions
Java 8 Lambda ExpressionsJava 8 Lambda Expressions
Java 8 Lambda Expressions
 
Object oriented programming in python
Object oriented programming in pythonObject oriented programming in python
Object oriented programming in python
 
Java EE Introduction
Java EE IntroductionJava EE Introduction
Java EE Introduction
 

Viewers also liked

Viewers also liked (20)

EJB .
EJB .EJB .
EJB .
 
EJB3 Basics
EJB3 BasicsEJB3 Basics
EJB3 Basics
 
Entity beans in java
Entity beans in javaEntity beans in java
Entity beans in java
 
Lecture 1: Introduction to JEE
Lecture 1:  Introduction to JEELecture 1:  Introduction to JEE
Lecture 1: Introduction to JEE
 
Java bean
Java beanJava bean
Java bean
 
Lecture 9 - Java Persistence, JPA 2
Lecture 9 - Java Persistence, JPA 2Lecture 9 - Java Persistence, JPA 2
Lecture 9 - Java Persistence, JPA 2
 
Enterprise Java Beans 3 - Business Logic
Enterprise Java Beans 3 - Business LogicEnterprise Java Beans 3 - Business Logic
Enterprise Java Beans 3 - Business Logic
 
Lecture 6 Web Sockets
Lecture 6   Web SocketsLecture 6   Web Sockets
Lecture 6 Web Sockets
 
Lecture 2: Servlets
Lecture 2:  ServletsLecture 2:  Servlets
Lecture 2: Servlets
 
Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)
 
Lecture 7 Web Services JAX-WS & JAX-RS
Lecture 7   Web Services JAX-WS & JAX-RSLecture 7   Web Services JAX-WS & JAX-RS
Lecture 7 Web Services JAX-WS & JAX-RS
 
EJB 3.0 - Yet Another Introduction
EJB 3.0 - Yet Another IntroductionEJB 3.0 - Yet Another Introduction
EJB 3.0 - Yet Another Introduction
 
Lecture 4: JavaServer Pages (JSP) & Expression Language (EL)
Lecture 4:  JavaServer Pages (JSP) & Expression Language (EL)Lecture 4:  JavaServer Pages (JSP) & Expression Language (EL)
Lecture 4: JavaServer Pages (JSP) & Expression Language (EL)
 
Lecture 3: Servlets - Session Management
Lecture 3:  Servlets - Session ManagementLecture 3:  Servlets - Session Management
Lecture 3: Servlets - Session Management
 
Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)
 
Ejb3 Presentation
Ejb3 PresentationEjb3 Presentation
Ejb3 Presentation
 
Bean Intro
Bean IntroBean Intro
Bean Intro
 
Lecture 5 JSTL, custom tags, maven
Lecture 5   JSTL, custom tags, mavenLecture 5   JSTL, custom tags, maven
Lecture 5 JSTL, custom tags, maven
 
Tutorial 4 - Basics of Digital Photography
Tutorial 4 - Basics of Digital PhotographyTutorial 4 - Basics of Digital Photography
Tutorial 4 - Basics of Digital Photography
 
EJB 3.0 Java Persistence with Oracle TopLink
EJB 3.0 Java Persistence with Oracle TopLinkEJB 3.0 Java Persistence with Oracle TopLink
EJB 3.0 Java Persistence with Oracle TopLink
 

Similar to Lecture 8 Enterprise Java Beans (EJB)

Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010
Rohit Kelapure
 
Java EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConJava EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseCon
Ludovic Champenois
 
Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望 Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望
javatwo2011
 
Session 4 Tp4
Session 4 Tp4Session 4 Tp4
Session 4 Tp4
phanleson
 
Contexts and Dependency Injection for the JavaEE platform
Contexts and Dependency Injection for the JavaEE platformContexts and Dependency Injection for the JavaEE platform
Contexts and Dependency Injection for the JavaEE platform
Bozhidar Bozhanov
 

Similar to Lecture 8 Enterprise Java Beans (EJB) (20)

The Latest in Enterprise JavaBeans Technology
The Latest in Enterprise JavaBeans TechnologyThe Latest in Enterprise JavaBeans Technology
The Latest in Enterprise JavaBeans Technology
 
Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010
 
Java EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConJava EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseCon
 
AAI-1713 Introduction to Java EE 7
AAI-1713 Introduction to Java EE 7AAI-1713 Introduction to Java EE 7
AAI-1713 Introduction to Java EE 7
 
AAI 1713-Introduction to Java EE 7
AAI 1713-Introduction to Java EE 7AAI 1713-Introduction to Java EE 7
AAI 1713-Introduction to Java EE 7
 
CDI Best Practices with Real-Life Examples - TUT3287
CDI Best Practices with Real-Life Examples - TUT3287CDI Best Practices with Real-Life Examples - TUT3287
CDI Best Practices with Real-Life Examples - TUT3287
 
Java online training from hyderabad
Java online training from hyderabadJava online training from hyderabad
Java online training from hyderabad
 
Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望 Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望
 
What's New in Enterprise JavaBean Technology ?
What's New in Enterprise JavaBean Technology ?What's New in Enterprise JavaBean Technology ?
What's New in Enterprise JavaBean Technology ?
 
Virtual classroom
Virtual classroomVirtual classroom
Virtual classroom
 
EJB et WS (Montreal JUG - 12 mai 2011)
EJB et WS (Montreal JUG - 12 mai 2011)EJB et WS (Montreal JUG - 12 mai 2011)
EJB et WS (Montreal JUG - 12 mai 2011)
 
Overview of Java EE 6 by Roberto Chinnici at SFJUG
Overview of Java EE 6 by Roberto Chinnici at SFJUGOverview of Java EE 6 by Roberto Chinnici at SFJUG
Overview of Java EE 6 by Roberto Chinnici at SFJUG
 
Session 4 Tp4
Session 4 Tp4Session 4 Tp4
Session 4 Tp4
 
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
InterConnect 2016 Java EE 7 Overview (PEJ-5296)InterConnect 2016 Java EE 7 Overview (PEJ-5296)
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
 
Contexts and Dependency Injection for the JavaEE platform
Contexts and Dependency Injection for the JavaEE platformContexts and Dependency Injection for the JavaEE platform
Contexts and Dependency Injection for the JavaEE platform
 
Java ee 8 + security overview
Java ee 8 + security overviewJava ee 8 + security overview
Java ee 8 + security overview
 
Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014
 
Advance java1.1
Advance java1.1Advance java1.1
Advance java1.1
 
S314168 - What's New in Enterprise Java Bean Technology @ JavaOne Brazil 2010
S314168 - What's New in Enterprise Java Bean Technology @ JavaOne Brazil 2010S314168 - What's New in Enterprise Java Bean Technology @ JavaOne Brazil 2010
S314168 - What's New in Enterprise Java Bean Technology @ JavaOne Brazil 2010
 
OTN Developer Days - Java EE 6
OTN Developer Days - Java EE 6OTN Developer Days - Java EE 6
OTN Developer Days - Java EE 6
 

More from Fahad Golra (9)

Seance 4- Programmation en langage C
Seance 4- Programmation en langage CSeance 4- Programmation en langage C
Seance 4- Programmation en langage C
 
Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Seance 3- Programmation en langage C
Seance 3- Programmation en langage C
 
Seance 2 - Programmation en langage C
Seance 2 - Programmation en langage CSeance 2 - Programmation en langage C
Seance 2 - Programmation en langage C
 
Seance 1 - Programmation en langage C
Seance 1 - Programmation en langage CSeance 1 - Programmation en langage C
Seance 1 - Programmation en langage C
 
Tutorial 3 - Basics of Digital Photography
Tutorial 3 - Basics of Digital PhotographyTutorial 3 - Basics of Digital Photography
Tutorial 3 - Basics of Digital Photography
 
Tutorial 2 - Basics of Digital Photography
Tutorial 2 - Basics of Digital PhotographyTutorial 2 - Basics of Digital Photography
Tutorial 2 - Basics of Digital Photography
 
Tutorial 1 - Basics of Digital Photography
Tutorial 1 - Basics of Digital PhotographyTutorial 1 - Basics of Digital Photography
Tutorial 1 - Basics of Digital Photography
 
Deviation Detection in Process Enactment
Deviation Detection in Process EnactmentDeviation Detection in Process Enactment
Deviation Detection in Process Enactment
 
Meta l metacase tools & possibilities
Meta l metacase tools & possibilitiesMeta l metacase tools & possibilities
Meta l metacase tools & possibilities
 

Recently uploaded

Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 

Recently uploaded (20)

WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
WSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AIWSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AI
 
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & InnovationWSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
 
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
 
WSO2Con2024 - Low-Code Integration Tooling
WSO2Con2024 - Low-Code Integration ToolingWSO2Con2024 - Low-Code Integration Tooling
WSO2Con2024 - Low-Code Integration Tooling
 
WSO2Con2024 - Software Delivery in Hybrid Environments
WSO2Con2024 - Software Delivery in Hybrid EnvironmentsWSO2Con2024 - Software Delivery in Hybrid Environments
WSO2Con2024 - Software Delivery in Hybrid Environments
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
 
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
WSO2Con2024 - Organization Management: The Revolution in B2B CIAM
WSO2Con2024 - Organization Management: The Revolution in B2B CIAMWSO2Con2024 - Organization Management: The Revolution in B2B CIAM
WSO2Con2024 - Organization Management: The Revolution in B2B CIAM
 
WSO2Con2024 - Facilitating Broadband Switching Services for UK Telecoms Provi...
WSO2Con2024 - Facilitating Broadband Switching Services for UK Telecoms Provi...WSO2Con2024 - Facilitating Broadband Switching Services for UK Telecoms Provi...
WSO2Con2024 - Facilitating Broadband Switching Services for UK Telecoms Provi...
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and ApplicationsWSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
 
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdfAzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 

Lecture 8 Enterprise Java Beans (EJB)

  • 1. Enterprise JavaBeans (EJB 3.x) Fahad R. Golra ECE Paris Ecole d'Ingénieurs - FRANCE
  • 2. Lecture 8 - Enterprise Java Beans (EJB) • Introduction to EJBs • Types of EJBs • Session Beans • Message Driven Beans • Transaction Management 2 JEE - Enterprise Java Beans
  • 3. 3 Layers of Information System 3 JEE - Enterprise Java Beans presentation layer application logic layer resource management layer Client informationsystem EJB JSP JSF Servlets JPA Database
  • 4. Java EE Server • The runtime portion of a Java EE product. A Java EE server provides EJB and web containers. 4 JEE - Enterprise Java Beans
  • 5. When to use EJB? • If the application needs • to be scalable • a transactional context • diversity of clients 5 JEE - Enterprise Java Beans
  • 6. Why to use EJBs • Encapsulate business logic • multi-tier architecture • Remote access • apps on different servers can access them • Simplicity • simpler than other remote object systems • Broad vendor support • JBoss, Oracle AS, WebLogic, WepSphere • Scalability • support for clustering, load-balancing and failover 6 JEE - Enterprise Java Beans
  • 7. Why EJB 3.x • Network connections between the clients and the EJBs • Naming services (JNDI) • Transactions • Persistence and the management of DB pool of connections • Distribution • Security • Management of component’s life cycle 7 JEE - Enterprise Java Beans
  • 8. Types of EJB 8 EJB Message-Driven Session Entity (pruned) [JPA] StatelessStateful Container Managed Persistence Bean Managed Persistence Singleton Bean Type Annotation Session Bean Performs a task for a client; optionally, may implement a web service Message- driven Bean Acts as a listener for a particular messaging type, such as the Java Message Service API
  • 9. Stateless Session Beans • Used when • The bean's state has no data for a specific client. • In a single method invocation, the bean performs a generic task for all clients. For example, you might use a stateless session bean to send an email that confirms an online order. • The bean implements a web service. 9 JEE - Enterprise Java Beans
  • 10. Stateless Session Beans 10 JEE - Enterprise Java Beans Java EE Server EJB Container Stateless Bean Pool Bean Instance Bean Instance Bean Instance client Random A random bean instance is selected from the pool
  • 11. Stateful Session Beans • Used when the following conditions are true • The bean's state represents the interaction between the bean and a specific client. • The bean needs to hold information about the client across method invocations. • The bean mediates between the client and the other components of the application, presenting a simplified view to the client. • Behind the scenes, the bean manages the work flow of several enterprise beans. 11 JEE - Enterprise Java Beans
  • 12. Stateful Session Beans 12 JEE - Enterprise Java Beans Java EE Server EJB Container Bean Instance Bean Instance Bean Instance client C client B client A One bean instance per client
  • 13. Singleton Session Beans • They are used when • State needs to be shared across the application. • A single enterprise bean needs to be accessed by multiple threads concurrently. • The application needs an enterprise bean to perform tasks upon application startup and shutdown. • The bean implements a web service. 13 JEE - Enterprise Java Beans
  • 14. Singleton Session Beans 14 JEE - Enterprise Java Beans Java EE Server EJB Container Bean Instance client C client B client A One bean instance per application server instance
  • 15. Category Related Annotations 15 JEE - Enterprise Java Beans Bean Type Annotation Session Bean @Stateless @Stateful @Singleton Message-driven Bean @MessageDriven JPA Entities @Entity* @EntityManager*
  • 16. Contents of EJB • Enterprise bean class: • business methods of the enterprise bean • any lifecycle callback methods. • Business interfaces: • define the business methods • not required if the enterprise bean exposes a local, no-interface view • Helper classes: • other classes needed by the enterprise bean class, such as exception and utility classes. 16 JEE - Enterprise Java Beans
  • 17. Remote & Local Access 17 JEE - Enterprise Java Beans presentation layer application logic layer resource management layer Client informationsystem EJB A JSP JSF Servlets JPA DatabaseJava EE Server EJB B Desktop app Legend: Local client Remote client
  • 18. Access Mode Annotations 18 JEE - Enterprise Java Beans Bean Type Annotation Session Bean @Local @Remote @LocalBean* @WebService Message-driven Bean @WebService JPA Entities N/A
  • 19. Remote & Local Access • Whether to allow local or remote access depends on the following factors. • Tight or loose couple of related beans • Type of client: web components on the same server or application clients, etc. • Component Distribution: A scalable server on multiple servers • Performance: Remote calls may be slower than local calls. Distributed computing on different servers for performance. 19 JEE - Enterprise Java Beans
  • 20. EJB Business Interfaces • Local Interface @Local public interface MyStatelessBeanLocal { String sayHello(String name); } • Remote Interface @Remote public interface MyStatelessBeanRemote { String sayHello(String name); } 20
  • 21. Stateless Session Beans • Each invocation of a stateless business method is independent from previous invocations • Because stateless session beans are "stateless" they tend to process requests faster and use less resources • All instances are equivalent – the EJB container can assign a pooled stateless bean instance to any client, improving scalability 21 JEE - Enterprise Java Beans
  • 22. Stateless session bean lifecycle 22 JEE - Enterprise Java Beans NON EXISTENT READY • Create new bean instance • DI on bean, if any • @PostConstruct, if any • @PreDestroy, if any Client DI or JNDI lookup Instances are removed automatically from the pool by the container
  • 23. Example Hello Bean (Stateless) @Stateless @Local(MyStatelessBeanLocal.class) @Remote(MyStatelessBeanRemote.class) public class MyStatelessBean implements MyStatelessBeanRemote, MyStatelessBeanLocal { public MyStatelessBean() { // TODO Auto-generated constructor stub } @Override public String sayHello(String name) { return "hello, " + name; } } 23 JEE - Enterprise Java Beans
  • 24. JNDI Lookup • Clients find the bean via JNDI • Client Java code doesn’t even know the machine on which the bean resides • Clients use the bean like a normal POJO • But arguments and return values are sent across network ︎ So, custom classes should be Serializable InitialContext context = new InitialContext(); InterfaceName bean =(InterfaceName)context.lookup("JNDI- Name"); • jndi.properties • ︎Text file in classpath; gives remote URL and other info 24 JEE - Enterprise Java Beans
  • 25. Accessing Local EJB • Dependency Injection @EJB MyStatelessBeanLocal myDIBeanLocal; • JNDI Lookup Hashtable jndiProperties = new Hashtable(); jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); Context context = new InitialContext(jndiProperties); MyStatelessBeanLocal myJNDIBeanLocal = (MyStatelessBeanLocal) context.lookup(“java:module/MyStatelessBean! com.ece.jee.MyStatelessBeanLocal”); • Clients do not use the new operator to obtain a new instance 25 JEE - Enterprise Java Beans
  • 26. Accessing Remote EJB • Dependency Injection @EJB MyStatelessBeanRemote myDIBeanRemote; • JNDI Lookup Hashtable jndiProperties = new Hashtable(); jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); Context context = new InitialContext(jndiProperties); MyStatelessBeanLocal myJNDIBeanLocal = (MyStatelessBeanLocal) context.lookup(“java:module/MyStatelessBean! com.ece.jee.MyStatelessBeanLocal”); • Clients do not use the new operator to obtain a new instance 26 JEE - Enterprise Java Beans
  • 27. Portable JNDI Syntax • java:global • JNDI namespace for remote EJBs java:global[/application name]/module name /enterprise bean name[/ interface name ] • java:module • JNDI namespace for local EJBs within the same module. java:module/enterprise bean name/[interface name] • java:app • JNDI namespace is used to look up local EJBs packaged within the same application. java:app[/module name]/enterprise bean name [/interface name] 27 JEE - Enterprise Java Beans
  • 28. Stateful Session Beans • POJOs • Instance of the Bean relates to a specific client (in memory while he/she is connected) • Expires in case of inactivity (similar to session in Servlet/Jsp) • Ordinary Java classes; no special interfaces or parent classes. 
 • Local or remote access • Can be accessed either on local app server or remote app server • Session Expiry • ︎ The Session expires after the method annotated with @Remove is executed • Session can also expire in case of a time-out 28 JEE - Enterprise Java Beans
  • 29. Stateful session bean lifecycle 29 JEE - Enterprise Java Beans NON EXISTENT READY PASSIVE • Create new bean instance • DI on bean, if any • @PostConstruct, if any Before instance passivation • @PrePassivate, if any After instance activation • @PostActivate, if any • @Remove* • @PreDestroy, if any Client DI or JNDI lookup * Method called by the client code, other methods are called by container
  • 30. Callback method annotations @PostConstruct public void initialize() { ... at Bean’s initialization ... } @PreDestroy • public void destroy() { ... destruction of Bean ... } @PrePassivate //only for Stateful beans public void beforeSwap() { ... to do before Bean is passivated ... } @PostActivate //only for Stateful beans public void afterSwap() { ... to do after Bean is activated ... } 30 JEE - Enterprise Java Beans
  • 31. @Remove • Container does not manage a pool for Stateful EJBs • If the instance is not removed it stays in the memory • A timeout from the server destroys the bean instance from READ or PASSIVE state • A method with @Remove annotation is used to manage the destruction of instance @Remove public void destroy(){ } 31 JEE - Enterprise Java Beans
  • 32. Singleton Session Beans • Only one instance is created per bean • All clients use the same instance • @Startup loads it, when server starts • Concurrency can be managed by two ways • Container Managed Concurrency • Bean Managed Concurrency • Bean Concurrency @ConcurrencyManagement(ConcurrencyManagementType.BEAN) public class MySingleton { Use synchronised, volatile, etc. 32 JEE - Enterprise Java Beans
  • 33. Container Managed Concurrency • Uses READ and WRITE locks • WRITE lock: No other READ or WRITE method can be executed concurrently • READ lock: Only READ lock methods can be executed concurrently • Default concurrency management is Container • Default lock for all methods is WRITE lock 33 JEE - Enterprise Java Beans
  • 34. Container Managed Concurrency @ConcurrencyManagement(ConcurrencyManagementType.CONTAINER) public class MySingleton { @Lock(LockType.WRITE) public void myMethod1() {} @Lock(LockType.READ) public void myMethod2() {} } 34 JEE - Enterprise Java Beans
  • 35. Singleton session bean lifecycle 35 JEE - Enterprise Java Beans NON EXISTENT READY • @Startup, create new bean instance • DI on bean, if any • @PostConstruct, if any • @PreDestroy, if any EJB Container
  • 36. EJB and Web Services • A client can access a JavaEE application through • JAX-WS web service • Business methods of EJB @Stateless @WebService public class HelloServiceBean { private final String message = "Hello, "; public void HelloServiceBean() { } @WebMethod public String sayHello(String name) { return message + name + "."; } } 36 JEE - Enterprise Java Beans
  • 37. Message-Driven Vs Stateless Beans • Resemblances • Retain no data or conversational state for a specific client. • All instances are equivalent. EJB container can • assign a message to any message-driven bean instance • pool these instances to allow streams of messages to be processed concurrently • A single message-driven bean can process messages from multiple clients. 37 JEE - Enterprise Java Beans
  • 38. Message-Driven Vs Stateless Beans • Differences • clients do not access message-driven beans through interfaces • contain some state across the handling of client messages, • JMS API connection, an open database connection, etc. • client access through JMS • by sending messages to the message destination for which the message-driven bean class is the MessageListener. 38 JEE - Enterprise Java Beans
  • 39. Message Driven Bean • They have the following characteristics • They execute upon receipt of a single client message. • They are invoked asynchronously. • They are relatively short-lived. • They do not represent directly shared data in the database, but they can access and update this data. • They can be transaction-aware. • They are stateless. 39 JEE - Enterprise Java Beans
  • 40. Message-driven bean lifecycle 40 JEE - Enterprise Java Beans NON EXISTENT READY • DI on bean, if any • Create new bean instance • @PostConstruct, if any • @PreDestroy, if any • Destroy the bean instance • onMessage
  • 41. Message-driven bean • JMS (java.sun.com/jms) • Two mothers of communication • Queue : Thread of discussion (one consumer) • Topic : Topic of discussion (diffusion) • ConnectionFactory : Factory of connections towards queue/topic • Connection : connection towards queue/topic • Session : • Creation of an sender and of a receiver ︎ • Can be transactional 41 JEE - Enterprise Java Beans
  • 42. Message Driven Bean @MessageDriven(activationConfig ={ @ActivationConfigProperty( propertyName = "destination", propertyValue = "topic_ece"), @ActivationConfigProperty( propertyName = "destinationType", propertyValue = "javax.jms.Topic")}) public class Mdb implements MessageListener { public void onMessage(Message inMessage) { System.out.println(((TextMessage)msg).getText()); } } 42
  • 43. Message Driven Bean (Sender) @Resource(name="rigolo", mappedName="topic_rigolo") Topic topic;
 @Resource(name="factory", mappedName="JTCF") TopicConnectionFactory factory;
 TopicSession session;
 TopicPublisher sender; public void publish(String value) {
 TopicConnection tc = factory.createTopicConnection(); session = tc.createTopicSession(false,Session.AUTO_ACKNOWLEDGE); sender = session.createPublisher(topic); TextMessage msg = session.createTextMessage(); msg.setText("MDB: " + value); sender.publish(msg); } 43
  • 44. Transaction Management • Business Transaction • Interaction in real world • Usually between enterprise & person or between enterprises • Information processing that is divided into individual, indivisible operations, called transactions • Performs function on (shared) database 44 JEE - Enterprise Java Beans
  • 45. The ACID Properties • A set of properties that guarantee that transactions are processed reliably • Atomicity • Consistency • Isolation • Durability 45 JEE - Enterprise Java Beans
  • 46. Atomicity • All (commit) or nothing (abort) • "all or nothing": if one part of the transaction fails, the entire transaction fails • Example: transfer money between two bank accounts • Must handle situations including power failures, errors, and crashes 46 JEE - Enterprise Java Beans
  • 47. Consistency • Each transaction takes valid states to valid states: • Satisfy integrity constraints, triggers • Sometimes the only notion of “valid” state is “a state that could have been produced by executing a sequence of transactions 47 JEE - Enterprise Java Beans
  • 48. Isolation • Each transaction behaves as if it were executed in isolation at some instant in time • AKA Serializability • Ensures that the concurrent execution of transactions results in a system state that would be obtained if transactions were executed serially • Consistency + Isolation implies the data remains consistent even when multiple transaction programs execute concurrently 48 JEE - Enterprise Java Beans
  • 49. Durability • The effect of a committed transaction will not be lost • Even in the event of power loss, crashes, or errors • So data must be on stable storage before commit • Usually done with a log (or journal) that must be forced before commit and used in case of crash recovery 49 JEE - Enterprise Java Beans
  • 50. Transactions • There are two types of transactions • Local Transactions • They span only on a single resource • Global Transactions (JTA Transactions) • They span on multiple resources • Default transaction in Java EE • Two management styles • Container managed transactions (default) • Bean managed transactions 50 JEE - Enterprise Java Beans
  • 51. Management Mode Annotations 51 JEE - Enterprise Java Beans Bean Type Annotation Transactions @TransactionManagement (CONTAINER) @TransactionManagement (BEAN) Security @RunAs() @RolesAllowed
  • 52. Bean Managed Transactions • Manually manage the transaction @TransactionManagement(TransactionManagementType.BEAN) public class MyBean { @Resource private UserTransaction tx; public void myMethod() { try { tx.begin(); methodcall1(); methodcall2(); methodcall3(); tx.commit(); } catch (Exception e) { e.printStackTrace();} } } 52 JEE - Enterprise Java Beans
  • 53. Contrainer Managed Transactions • The start and stop of transactions is managed by container @TransactionManagement(TransactionManagementType.CONTAINER) public class MyTester { @TransactionAttribute(TransactionAttributeType.MANDATORY) public void myMethod() { methodcall1(); methodcall2(); methodcall3(); } } 53 JEE - Enterprise Java Beans
  • 54. Transaction Attributes • REQUIRED • Client in transaction: uses transaction • Client without transaction: creates new transaction • REQUIRES_NEW • Client in transaction: creates new transaction • Client without transaction: creates new transaction • MANDATORY • Client in transaction: uses transaction • Client without transaction: throws exception 54 JEE - Enterprise Java Beans
  • 55. Transaction Attributes • NEVER • Client in transaction: throws exception • Client without transaction: without a transaction • SUPPORTS • Client in transaction: uses transaction • Client without transaction: without a transaction • NOT_SUPPORTED • Client in transaction: without a transaction • Client without transaction: without a transaction 55 JEE - Enterprise Java Beans
  • 56. 56 Introduction to Java Platform, Enterprise Edition