Aravind Vinnakota EJB Architecture

62
EJB Architecture and Design CS486 Global Knowledge Networks Instructor : Dr. V. Juggy Presentation by: Aravind Vinnakota

Transcript of Aravind Vinnakota EJB Architecture

Page 1: Aravind Vinnakota EJB Architecture

EJB Architecture and Design

CS486 Global Knowledge Networks Instructor : Dr. V. Juggy

Presentation by: Aravind Vinnakota

Page 2: Aravind Vinnakota EJB Architecture

What is EJB?An EJB is just a collection of Java

classes and XML file, bundled into a single unit. The Java classes must follow certain rules and provide certain callback methods.

EJB is just a specification. It is not a product.

EJBs are reusable components.

Page 3: Aravind Vinnakota EJB Architecture

What is EJB?EJB is a widely-adopted server-side

component architecture for J2EE.EJB components are designed to

encapsulate business logic, and to protect the application developer from having to worry about system level issues.

Page 4: Aravind Vinnakota EJB Architecture

ContentsServices provided by EJB containerCircumstances of EJB component usageHow an EJB component looks like?View of an EJB component by client

programmer and EJB developerMechanisms by which EJB container provides

its servicesRules an EJB developer must follow and how

to use EJBs in a web architecture?

Page 5: Aravind Vinnakota EJB Architecture

Key features of EJB technology

EJB components are server-side components written entirely in the Java programming language

EJB components contain business logic only - no System-level programming

System-level services (i.e. "plumbing") such as transactions, security, Life-cycle, threading, persistence, etc. are automatically managed for the EJB component by the EJB server

Page 6: Aravind Vinnakota EJB Architecture

Key features of EJB technology

EJB architecture is inherently transactional, distributed, portable, multi-tier, scalable and secure

EJB components are fully portable across any EJB server and any OS, work with any client.

Components are declaratively customizedThere are four major parts to every bean: the

home interface, the remote interface, the implementation class and the XML deployment descriptor

Page 7: Aravind Vinnakota EJB Architecture

EJB vs JavaBeansThe JavaBeans architecture is meant to

provide a format for general-purpose components whereas the EJB architecture provides a format for encapsulation and management of business logic.

JavaBeans has tier of execution at Client and EJB has at Server (specifically business logic tier)

Page 8: Aravind Vinnakota EJB Architecture

EJB vs JavaBeans In JavaBeans the runtime execution

environment provides services like Java libraries, Java application etc. The EJB runtime environment provides services of Persistence, declarative transactions and security, connection pooling and lifecycle services.

Page 9: Aravind Vinnakota EJB Architecture

Varieties of BeansSession Beans Stateful session bean Stateless session beanEntity Beans With container-managed persistence With bean-managed persistenceMessage-Driven Beans

Page 10: Aravind Vinnakota EJB Architecture

Why use EJBs in your design?

EJB specification provides enterprise-level services, that is, it provides software services that are fundamental to an organization’s purpose.

EJB’s API was designed to keep the application programmer from having to provide systems-level services, so that they are free to concentrate on business logic.

Page 11: Aravind Vinnakota EJB Architecture

Why use EJBs in your design?

A requirement of any of the services provided by an EJB container like transactions, scalability, persistence, security, future growth possibilities is an appropriate reason to use EJB in the design of the application.

Page 12: Aravind Vinnakota EJB Architecture

EJB Architecture

J2EE Application Server

EJB Container

Application Logic DataClient

RDBMS

Corba

Mail

RM

I JDB

C JavaM

ail JMSJTA

Session Bean

Entity Bean

Client Application

Page 13: Aravind Vinnakota EJB Architecture

Roles in EJB DevelopmentEJB provider - a person who develops

EJB ComponentsEJB Deployer - a person responsible

for deploying EJB’s in EJB serverApplication Server/ EJB Container

Vendor - one who provides application server on which the application is deployed

Page 14: Aravind Vinnakota EJB Architecture

Roles in EJB DevelopmentApplication assembler - one who

combine the EJB components with other software to make a complete application

System administrator - one who manages the application after it has been deployed into a target environment.

Page 15: Aravind Vinnakota EJB Architecture

Roles in EJB Development

EJBProvider

ApplicationAssembler

App Server/EJB Container

Provider

Deployer

SystemAdministrator

Page 16: Aravind Vinnakota EJB Architecture

EJB Container and its Services

A container is an execution environment for a component. The component lives in the container and the container provides the services for the component.

Similarly, a container lives in an application server, which provides an execution environment for it and other containers.

Page 17: Aravind Vinnakota EJB Architecture

Services provided by an EJB container

Persistence Ex: simple connection pooling,

automatic persistence, etc. EJBs created with application development tools will encapsulate data access in components.

Page 18: Aravind Vinnakota EJB Architecture

Services provided by an EJB container

Declarative transactionsData cachingDeclarative SecurityError HandlingComponent Framework for Business LogicScalability and Fall-OverPortabilityManageability

Page 19: Aravind Vinnakota EJB Architecture

How the Container Provides Services

There are three basic ideas: First, there are clearly defined responsibilities between

the various parts of an application using EJB component namely the client, the EJB container and the EJB component. The definition of these responsibilities is formally known as a contract.

Second, the services that the container provides are defined in such a way that they are orthogonal to the component. In other words, security, persistence, transactions are separate from the Java files that implement the business logic of the component.

Page 20: Aravind Vinnakota EJB Architecture

How the Container Provides Services

Third, the container interposes on each and every call to an EJB component so that it can provide its services. In other words, the container puts itself between the client and the component on every single business method call.

Page 21: Aravind Vinnakota EJB Architecture

Contracts

EJB Container/Application Server

Enterprise JavaBean

Client

Page 22: Aravind Vinnakota EJB Architecture

Rules for the bean programmer The developer of the EJB component must implement

the business methods in the implementation class The bean provider must implement the ejbCreate(),

ejbPostCreate(),ejbRemove() methods and the ejbFind<METHOD>() methods if the bean is an entity with bean managed persistence

The bean provider must define the enterprise bean’s home and remote interfaces

For session beans, the bean provider must implement the container callbacks defined in the javax.ejb.SessionBean interface

Page 23: Aravind Vinnakota EJB Architecture

Rules for the bean programmer

For entity beans, the provider must implement the container callbacks defined in the javax.ejb.EntityBean interface

The bean provider must not use programming practices that would interfere with the container’s runtime management of the enterprise bean instances

Page 24: Aravind Vinnakota EJB Architecture

Interposition : method call to an EJB Container from a remote client

First, the client makes a call on the RMI stub

This RMI stub interposes on the method call in order to marshal parameters and send the information across the network

A skeleton on the server side unmarshals the parameters and delivers them to the EJB Container

Page 25: Aravind Vinnakota EJB Architecture

Interposition diagram

Interposition class

ClientContainergenerated

classEJB

RMI Stub

RMIStub

Network

Page 26: Aravind Vinnakota EJB Architecture

Interposition : from EJB Container to EJBs The container will examine the security credentials of

the caller of the method It will start or join with any required transactions It will make any necessary calls to persistence functions It will trigger various callbacks to allow the EJB

Component to acquire resources Only after all this is done will the actual business

method be called Once it is called, the container will do some more work

with transactions, persistence, callbacks and returns data or exception to the remote client

Page 27: Aravind Vinnakota EJB Architecture

Working with EJBs The Enterprise JavaBeans

specification is written for three audiences:

The Client developerThe EJB developerThe EJB container developer

Page 28: Aravind Vinnakota EJB Architecture

EJB ClientsEJB Clients are applications that access EJB

components in EJB containers. There are two possible types. The first category is application clients which are stand-alone applications accessing the EJB components using the RMI-IIOP protocol. The second category of application clients are components in the web container. They are java servlets and JSPs which also access the EJB components via the RMI-IIOP protocol.

Page 29: Aravind Vinnakota EJB Architecture

The Client Developer’s ViewThe client has a smaller set of concerns then a

bean developer with regard to using EJBs. Basically, he need to know :

how to find or create a bean, how to use its methods and how to release its resourcesThe client need not worry about the

implementation of the EJB, callbacks that the EJB container will make on the EJB or nature of the services provided to the EJB.

Page 30: Aravind Vinnakota EJB Architecture

EJB’s interfaceHome Interface : It is primarily for the life

cycle operations of the bean: creating, finding, and removing EJBs. The home interface is not associated with a particular bean, just with a type of bean.

Remote Interface : It is for business methods. Logically, it represents a particular bean on the server. The remote interface also provides some infrastructure methods associated with a bean instance, rather than a bean type.

Page 31: Aravind Vinnakota EJB Architecture

Sample client application pseudo code

A client programmer will acquire an EJB’s home interface through JNDI, and they use this home interface to :

Create or findinstance of bean

Execute methods Reference(Handle)

Remove bean

Page 32: Aravind Vinnakota EJB Architecture

Client.java Package orderMgmt; import java.util.properties; import java.naming.Context; // for name-to-object findings import java.naming.InitialContext;// context for naming operations public class Client { try { Properties prop = new Properties(); // server dependent properties for InitialContext prop.put(Context.INITIAL_CONTEXT_FACTORY,

“org.jnp.interfaces.NamingContextFactory”); prop.put(Context.PROVIDER_URL, “localhost:1099”); Context ctx = new InitialContext(prop); Object objref = ctx.lookup(“OrderManagement”);

Page 33: Aravind Vinnakota EJB Architecture

Client contd.. // casting home interface reference to the OrderManagementHome OrderManagementHome home = (OrderManagementHome)

javax.rmi.PortableRemoteObject.narrow(objref, OrderManagementHome.class);

// home interface to create an instance of the OrderManagement OrderManagement orderManagement = home.create(); // calling placeOrder() orderManagement.placeOrder("Dan OConnor", "Wrox books on programming", 1000); orderManagement.remove(); System.out.println("Order successfully placed."); } catch (Exception e) { e.printStackTrace(); } } }

Page 34: Aravind Vinnakota EJB Architecture

The Bean Programmer’s viewMain responsibility is write business logic and

structure the code in a particular structure. The structure has 4 files, the home interface, remote interface, business logic class file and the XML file. The XML file called the deployment descriptor, contains the structural information about the bean, declares the bean’s external dependencies and specifies certain information about how services such as transaction and security work.

Page 35: Aravind Vinnakota EJB Architecture

Interface EJBObject package javax.ejb; public interface javax.ejb.EJBObject extends

java.rmi.Remote { EJBHome getEJBHome() throws java.rmi.RemoteException; Handle getHandle() throws java.rmi.RemoteException; Object getPrimaryKey() throws java.rmi.RemoteException; boolean isIdentical(EJBObject obj) throws

java.rmi.RemoteException; void remove() throws java.rmi.RemoteException; }

Page 36: Aravind Vinnakota EJB Architecture

OrderManagement code.. package orderMgmt; import javax.ejb.*;

public interface OrderManagement extends javax.ejb.EJBObject { public void placeOrder(String custName, String prodName, int

quantity) throws java.rmi.RemoteException; public void cancelOrder(String custName, String prodName) throws java.rmi.RemoteException; public boolean isShipped(String custName, String prodName)

throws java.rmi.RemoteException; }

Page 37: Aravind Vinnakota EJB Architecture

OrderManagementBean code.. package orderMgmt; import javax.ejb.*;

public class OrderManagementEJB implements javax.ejb.SessionBean { public void placeOrder(String custName, String prodName, int

quantity) { // ... Business logic ...} public void cancelOrder(String custName, String prodName) { // ... Business logic ...} public boolean isShipped(String custName, String prodName) { // ... Business logic … return true; }

Page 38: Aravind Vinnakota EJB Architecture

OrderManagementBean code.. public void ejbCreate() { // Can be empty } public void ejbRemove() { // Can be empty } public void ejbActivate() { // Can be empty} public void ejbPassivate() { // Can be empty} public void setSessionContext( SessionContext ctx ) { // Can be empty} }

Page 39: Aravind Vinnakota EJB Architecture

Interface EJBHome Package javax.ejb; public interface EJBHome extends java.rmi.Remote { EJBMetaData getEJBMetaData () throws

java.rmi.RemoteException; HomeHandle getHomeHandle() throws

java.rmi.RemoteException; void remove(Handle handle) throws

java.rmi.RemoteException, java.ejb.RemoveException; void remove(Object primary key) throws

java.rmi.RemoteException, java.ejb.RemoveException; }

Page 40: Aravind Vinnakota EJB Architecture

OrderManagementHome code..

package orderMgmt; import javax.ejb.*;

public interface OrderManagementHome extends javax.ejb.EJBHome

{ public OrderManagement create() throws java.rmi.RemoteException,

javax.ejb.CreateException; }

Page 41: Aravind Vinnakota EJB Architecture

The xml file : ejb-jar.xml <?xml version=“1.0”?> <ejb-jar> <enterprise-beans> <session> <ejb-name>OrderManagement</ejb-name> <home>orderMgmt.OrderManagementHome</home> <remote>orderMgmt.OrderManagement</remote> <ejb-class>orderMgmt.OrderManagementBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans>

Page 42: Aravind Vinnakota EJB Architecture

The xml file : ejb-jar.xml <assembly-descriptor> <container-transaction> <method> <ejb-name>OrderManagement</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute> </container-transaction> </assembly-descriptor> </ejb-jar>

Page 43: Aravind Vinnakota EJB Architecture

Structure of JAR file META -INF\ ejb-jar.xml orderMgmt\ OrderManagement.class OrderManagementHome.class

OrderManagementBean.class

Page 44: Aravind Vinnakota EJB Architecture

What you can’t do in an EJB component?

You cannot use Reflection API to access information inaccessible to you.

You cannot create a class loader or replace a security manager.

You cannot set the socket factory used by ServerSocket or Socket

You cannot use the object substitution features of the serialization protocol

Page 45: Aravind Vinnakota EJB Architecture

What you can’t do in an EJB component?

use Threads or the Threading APIuse the AWTAct as a Network Serveruse Read/Write static fieldsuse java.io packageLoad a native libraryuse “this” as an Argument or Return valueuse Loopback Calls

Page 46: Aravind Vinnakota EJB Architecture

EJB Components on the Web Three classes of objects in MVC architecture:Model : This is the data and business-logic

component. It can serve multiple views.View : This is the presentation component or

the user-interface component. There can be different presentations of a single model.

Controller : This is the component that responds to user input. Translates user-interface events into changes to the model and defines the way the user-interface reacts to those events.

Page 47: Aravind Vinnakota EJB Architecture

Implementation of MVC in a web site

Controller

Model

Browser Client

view1.jsp

view2.jsp

view3.jsp

Main.jsp

Views 1

2

3

4

5

Page 48: Aravind Vinnakota EJB Architecture

Design of the EJB TierUML use cases: UML is the Unified

Modeling Language, the standard language for expressing the model of the software system that we intend to build.

Use cases are subset of UML that expresses the functionality of the software to be delivered. Use cases describe what to do, but not how to do it.

Page 49: Aravind Vinnakota EJB Architecture

Analysis ObjectsInterface Objects : The interface object

is responsible for controlling access to the EJB tier from any client. An interface object should always be represented by a session bean in the implementation.

Ex : controller servlet for the web application’s model-view-controller architecture.

Page 50: Aravind Vinnakota EJB Architecture

Control ObjectsControl objects provide services to

the application. They model functionality that is not naturally associated with a particular entity or interface. Control objects should be represented by session beans in the implementation.

Page 51: Aravind Vinnakota EJB Architecture

Entity ObjectsEntity objects model those business

objects that should maintain their state after the use case completes. This means they represent data in the database. Entity beans are often represented by entity beans in the implementation model.

Page 52: Aravind Vinnakota EJB Architecture

An Example of EJB DesignConsider the case of a company that develops

products, takes orders for those products, and then manufactures and ships them.

Actors in the company : An engineer, a web customer, a phone operator who takes orders from a catalog, floor manager who manages the manufacturing process, a crew member that actually builds the product ordered and a manager who tracks overdue orders.

Page 53: Aravind Vinnakota EJB Architecture

Use CasesCreate a ProductPlace an OrderCancel an OrderSelect an Order for ManufactureBuild a ProductShip an OrderList Overdue Orders

Page 54: Aravind Vinnakota EJB Architecture

Use case diagram from analysis

Engineer

Customer

Operator

Manager

Crew

M’ment

Create Product

Place Order

Cancel Order

Select Order

Build Product

Ship an Order

Overdue Orders

Page 55: Aravind Vinnakota EJB Architecture

Stereotype icons in UMLInterface Object :

Entity Object :

Control Object :

Page 56: Aravind Vinnakota EJB Architecture

Translation of analysis model into implementation

Actor User Interface Type Interface Object Impl’ation

Engineer Visual Basic Session Bean (RMI/IIOP) Customer Web Application JavaBean proxy / S Bean Operator Swing GUI Session Bean Manager Web Application JavaBean proxy / S Bean Crew Palm Pilot XHTML Servelet to Session Bean Management Web Application JavaBean proxy / S Bean

Page 57: Aravind Vinnakota EJB Architecture

View of use case actors and their respective interface objects

Engineer

Customer

Operator

Manager

Crew

Manage--ment

VB App

Web App

Swing app

Web App

Web App

Palm App

Page 58: Aravind Vinnakota EJB Architecture

View of interaction of interface and control objects

Shiporder

BuildProduct

Select

Cancel

Place

Create

ListOverdue

VBApp

WebApp

WebApp

Web App

SwingApp

PalmApp

Page 59: Aravind Vinnakota EJB Architecture

View of interaction between control objects and entity objects

RoutingProduct

Order

Shipment

Account

SupplierShippingCompany

Customer

CreateProduct

PlaceOrderCancelOrder

Select forManufactureBuildProductShip OrderListOverdue

Page 60: Aravind Vinnakota EJB Architecture

SummaryEJBs are intended for transactional systemsEJBs are portable, reusable server-side

components that execute in a containerAssist developer productivity, extend application

capability, and improve system stabilityAre accessible from many different types of

clientsThere are three types of beans : stateful session,

stateless session, and entity

Page 61: Aravind Vinnakota EJB Architecture

SummaryThere are four major parts to every bean: the

home interface, the remote interface, the implementation class, and the XML deployment descriptor

The enterprise bean developer must follow certain rules to get the benefits of EJB technology

The roles of EJBs can be understood by analyzing a model of your enterprise in terms of interface, control and entity objects

Page 62: Aravind Vinnakota EJB Architecture