Download ppt - Enterprise JavaBeans

Transcript
Page 1: Enterprise JavaBeans

Java Programming: Advanced Topics

1

Enterprise JavaBeans

Chapter 14

Page 2: Enterprise JavaBeans

Java Programming: Advanced Topics

2

Objectives• Explore an enterprise application’s needs for secure

distributed access, scalability with high performance, robustness, data persistence with transactional integrity, and management of distributed and often disparate resources

• Discover how the EJB framework provides the quality of services enterprise applications require

• Learn how stateful and stateless session EJBs provide components that perform business logic

Page 3: Enterprise JavaBeans

Java Programming: Advanced Topics

3

Objectives (Cont.)

• Learn how to program an EJB client

• Discuss exception handling in EJBs and EJB clients

• Learn how entity beans represent persistent data in Java objects

Page 4: Enterprise JavaBeans

Java Programming: Advanced Topics

4

Objectives (Cont.)

• Discuss mapping fields of entity beans to elements in databases using CMP and BMP

• Learn how to use container-managed relationships and EJB query language with container-managed persistence

• Learn what Java Message Service is and learn how message-driven beans consume asynchronous messages

Page 5: Enterprise JavaBeans

Java Programming: Advanced Topics

5

Objectives (Cont.)

• Discuss transactional properties of EJBs

• Discuss elements of application security that relate to EJBs

• Consider some best practices for designing applications that use EJBs

Page 6: Enterprise JavaBeans

Java Programming: Advanced Topics

6

Enterprise Programming • EJB specification: a description of this

environment and the framework for building distributed objects that implement a standard interface

• Distributed systems: software systems that reside on several physical hosts – the components must interoperate over a network

that may be a local area network (LAN) or the Internet

Page 7: Enterprise JavaBeans

Java Programming: Advanced Topics

7

Enterprise Programming (Cont.)• Scalability: the ability of a system to continue to

give high performance as the number of users increases

• Persistence: any data that outlives any software component

• Resource management is required whenever the system makes high demands on databases and other resources

Page 8: Enterprise JavaBeans

Java Programming: Advanced Topics

8

Enterprise Programming (Cont.)• Connection pooling: keeping a set of

connections open so that different software components can be given an open connection for short-term exclusive use

• Security: usually of critical importance in enterprise applications

• Transactional integrity: often the quality that most concerns developers of enterprise applications

Page 9: Enterprise JavaBeans

Java Programming: Advanced Topics

9

What are EJBs • Enterprise JavaBeans (EJBs): server-side

software components that conform to the J2EE architecture for development and deployment of distributed systems

• J2EE-compliant application servers must provide a run-time environment for the EJBs: an EJB container

Page 10: Enterprise JavaBeans

Java Programming: Advanced Topics

10

What are EJBs (Cont.)

• EJBs come in three basic kinds:– Session beans:

• can perform any kind of processing

– Entity beans:• represent persistent data

– Message-driven beans (MDB):• have a specialized purpose and are used with

messaging software

Page 11: Enterprise JavaBeans

Java Programming: Advanced Topics

11

What are EJBs (Cont.)

• The major components of an EJB:– Bean class– Home interface– Local or Remote interface

Page 12: Enterprise JavaBeans

Java Programming: Advanced Topics

12

MVC Architecture

Page 13: Enterprise JavaBeans

Java Programming: Advanced Topics

13

EJB Containers and Services

• The role of the EJB container is to provide the following:– The distribution infrastructure and a naming service to

help client code locate and access EJBs.– The ability to place EJBs in a scalable architecture– Support for concurrent access– Resource management, including connection pooling– Security services in addition to the secure

environment that can be configured for applications loaded into the application server

– Transaction managers that interact with JDBC drivers and resource adapters

Page 14: Enterprise JavaBeans

Java Programming: Advanced Topics

14

J2EE Enterprise Application Packaging and Deployment

• EJBs are always packaged in J2EE enterprise applications

• Files that compose EJBs are packaged in jar files

• An EJB jar must contain a deployment descriptor file

Page 15: Enterprise JavaBeans

Java Programming: Advanced Topics

15

J2EE Packaging into Archive Files

Page 16: Enterprise JavaBeans

Java Programming: Advanced Topics

16

Session EJBs

• Session EJBs can do general purpose processing

• They are associated with the client that calls them

• There are two types of session EJBs:– stateful – stateless

Page 17: Enterprise JavaBeans

Java Programming: Advanced Topics

17

Stateless Session EJBs

• Stateless session beans can be shared among clients

• Methods defined in the javax.ejb.SessionBean interface are call-back methods that control the lifecycle of the bean, that called by the container

Page 18: Enterprise JavaBeans

Java Programming: Advanced Topics

18

Stateless Session EJBs (Cont.)• Steps to create a stateless session EJB:

– 1. Define a class that extends the SessionBean interface

– 2. Create a home interface – 3. Add business methods to the session bean class

and write implementations of those methods– 4. Add a remote interface and include all the

business methods that can be called by remote clients

– 5. Write the deployment descriptor

Page 19: Enterprise JavaBeans

Java Programming: Advanced Topics

19

Stateful Session EJBs

• Stateful session EJBs retain conversational state between method calls and are used by only one client

• Conversational state: information that must be retained as long as the client is actively interacting with the application

• Transactional state: data that must be permanently recorded when the client activity ends

Page 20: Enterprise JavaBeans

Java Programming: Advanced Topics

20

EJB Clients

• The EJB 2.0 specification adds interfaces to all entity and session beans specifically for use by co-located clients

• There are four interfaces that you can define for a session or entity bean

Page 21: Enterprise JavaBeans

Java Programming: Advanced Topics

21

The Client Interfaces

Page 22: Enterprise JavaBeans

Java Programming: Advanced Topics

22

The Client Interfaces (Cont.)

Page 23: Enterprise JavaBeans

Java Programming: Advanced Topics

23

The Client Interfaces (Cont.)

Page 24: Enterprise JavaBeans

Java Programming: Advanced Topics

24

The Client Interfaces (Cont.)

Page 25: Enterprise JavaBeans

Java Programming: Advanced Topics

25

Writing EJB Clients

• The client starts by accessing the JNDI namespace, by instantiating an object of type javax.naming.InitialContext

• When the client has the EJB home, it uses a create method to get a handle to the remote interface

Page 26: Enterprise JavaBeans

Java Programming: Advanced Topics

26

Handling Exceptions in EJB Clients

• Define and use application-level exception classes to encapsulate anticipated problem conditions

• Application-level exceptions: exceptions that business logic can anticipate and possibly recover from.

Page 27: Enterprise JavaBeans

Java Programming: Advanced Topics

27

Entity EJBs• Entity beans represent persistent data• Use entity beans as the interface between Java

components and relational or object-oriented databases

• The container uses the primary key to locate the data when a client requests an entity bean and creates only one bean to represent that data in a Java object

Page 28: Enterprise JavaBeans

Java Programming: Advanced Topics

28

EJB to Database Schema Mapping

• There are three approaches to database schema mapping:– Top-down mapping:

• possible when a new database is required and Java developers are allowed to create databases

– Bottom-up mapping: • occurs when you have a database and can design your EJBs

to match the tables and columns defined in the database schema

– Meet-in-the-middle mapping: • most common solution in practice

Page 29: Enterprise JavaBeans

Java Programming: Advanced Topics

29

EJB to Database Schema Mapping (Cont.)

• The EJB specification allows two approaches:– Container Managed Persistence (CMP):

• involves declaring the mapping between the deployment descriptor and delegating all code generation to the container

– Bean Managed Persistence (BMP):• is a do-it-yourself solution

Page 30: Enterprise JavaBeans

Java Programming: Advanced Topics

30

Sample CMP Entity Bean

Page 31: Enterprise JavaBeans

Java Programming: Advanced Topics

31

EJB Query Language

• Enterprise JavaBean Query Language (EJB QL) was introduced in the EJB 2.0 specification to support the abstract persistence model

• EJB QL: language for expressing the equivalent of SQL SELECT statements for CMP beans

Page 32: Enterprise JavaBeans

Java Programming: Advanced Topics

32

Comparing EJB QL and SQL Statements

Page 33: Enterprise JavaBeans

Java Programming: Advanced Topics

33

Using EJB QL

Page 34: Enterprise JavaBeans

Java Programming: Advanced Topics

34

Message-Driven Beans

• An message-driven bean (MDB) initiates processing in response to an external event

• To create an MDB, build the bean class• The MDB class must implement

javax.ejb.MessageDrivenBean and javax.jms.MessageListener

Page 35: Enterprise JavaBeans

Java Programming: Advanced Topics

35

A Deployment Descriptor with MDB

Page 36: Enterprise JavaBeans

Java Programming: Advanced Topics

36

A Possible Scenario that Uses MDBs

Page 37: Enterprise JavaBeans

Java Programming: Advanced Topics

37

EJB Transactional Characteristics • The EJB specification gives you options for

defining transactions:– Container managed transactions (CMT)– Bean managed transactions (BMT)– Client demarked transaction

Page 38: Enterprise JavaBeans

Java Programming: Advanced Topics

38

EJB Transactional Levels

Page 39: Enterprise JavaBeans

Java Programming: Advanced Topics

39

EJB Transactional Levels (Cont.)

Page 40: Enterprise JavaBeans

Java Programming: Advanced Topics

40

EJB Transactional Levels (Cont.)

Page 41: Enterprise JavaBeans

Java Programming: Advanced Topics

41

EJB Security

• The concept of passing security roles down the call stack as EJB methods call other EJB methods is called delegation

• Role-based security can be applied to entire EJBs or to individual methods

• EJB developers are not responsible for user authentication or authorization (mapping the user to a role)

Page 42: Enterprise JavaBeans

Java Programming: Advanced Topics

42

Summary• EJBs are distributable server-side components

that run in EJB containers provided by J2EE-compliant application servers

• EJBs come in three basic kinds: session beans, entity beans, and message-driven beans (MDB)

• EJB clients locate bean instances by looking up the name in a JNDI server

• Stateless session beans can be shared among clients, while stateful session EJBs are used by only one client

Page 43: Enterprise JavaBeans

Java Programming: Advanced Topics

43

Summary (Cont.)

• Entity beans represent persistent data and can be designed for container-managed persistence (CMP) or bean-managed persistence (BMP)

• EJB QL is a SQL-like language for writing database queries in terms of CMP bean classes and fields

• The concept of passing security roles down the call stack as EJB methods call other EJB methods is called delegation


Recommended