Top Banner
J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah
58

J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Dec 21, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

J2EE and Enterprise Java Beans

Ajay BajajKunal MehtaArun Marioli

Dhairya Shah

Page 2: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Distributed Multi-tiered Applications• The J2EE platform uses a multi-tiered

distributed application model for both enterprise applications

• Application logic is divided into “components” according to function, and the various application components that make up a J2EE application are installed on different machines depending on the tier in the multi-tiered J2EE environment to which the application component belongs

Page 3: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

J2EE Architecture

• J2EE multi-tiered applications are generally considered to be three-tiered applications because they are distributed over three different locations– client machines– the J2EE server machine– the database or legacy

machines at the back end

Page 4: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

J2EE Architecture

• Three-tiered applications that run in this way extend the standard two-tiered client and server model by placing a multithreaded application server between the client application and back-end storage

Page 5: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

J2EE Containers

• The application server maintains control and provides services through an interface or framework known as a container

• There are five defined container types in the J2EE specification

Page 6: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Server J2EE Containers

• Three of these are server-side containers:– The server itself, which provides the J2EE

runtime environment and the other two containers

– An EJB container to manage EJB components– A Web container to manage servlets and JSP

pages

Page 7: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Client J2EE Containers

• The other two container types are client-side:– An application container for stand-alone GUIs,

console– An applet container, meaning a browser, usually

with the Java Plug-in

Page 8: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

J2EE Components

• As said earlier, J2EE applications are made up of components

• A J2EE component is a self-contained functional software unit that is assembled into a J2EE application with its related classes and files and that communicates with other components

Page 9: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Components

• Client components run on the client machine, which correlate to the client containers

• Web components -servlets and JSP pages

• EJB Components

Page 10: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Packaging Applications and Components

• Under J2EE, applications and components reside in Java Archive (JAR) files

• These JARs are named with different extensions to denote their purpose, and the terminology is important

Page 11: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Various File types

• Enterprise Archive (EAR) files represent the application, and contain all other server-side component archives that comprise the application

• Client interface files and EJB components reside in JAR files

• Web components reside in Web Archive (WAR) files

Page 12: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Deployment Descriptors• Deployment descriptors are included in the JARs,

along with component-related resources• Deployment descriptors are XML documents that

describe configuration and other deployment settings (remember that the J2EE application server controls many functional aspects of the services it provides)

• The statements in the deployment descriptor are declarative instructions to the J2EE container; for example, transactional settings are defined in the deployment descriptor and implemented by the J2EE container

Page 13: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Deployment Descriptors

• Most J2EE Web Services vendors provide a GUI tool for generating deployment descriptors and performing deployment because creating manual entries is tedious and error prone

• The deployment descriptor for an EJB component must be named ejb-jar.xml, and it resides in the META-INF directory inside the EJB JAR file

Page 14: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

EJB Components

• EJB components are server-side, modular, and reusable, comprising specific units of functionality

• They are similar to the Java classes we create every day, but are subject to special restrictions and must provide specific interfaces for container and client use and access

• We should consider using EJB components for applications that require scalability, transactional processing, or availability to multiple client types

Page 15: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

EJB Components- Major Types• Session beans

– These may be either stateful or stateless and are primarily used to encapsulate business logic, carry out tasks on behalf of a client, and act as controllers or managers for other beans

• Entity beans– Entity beans represent persistent objects or business

concepts that exist beyond a specific application's lifetime; they are typically stored in a relational database

Page 16: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

The home and component interface

• A bean's home interface specifies methods that allow the client to create, remove, and find objects of the same type

• The home interface provides bean management and life cycle methods

• EJB functionality is obtained through the bean's component interface, which defines the business methods visible to, and callable by, the client

• The developer writes the component interface, and the container creates the implementation for client interaction

Page 17: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Overview

• Enterprise JavaBeans is a specification for creating server-side secure, scalable, transactional, multi-user secure enterprise-level applications.

• These server-side components, called enterprise beans, are distributed objects that are hosted in Enterprise Java Bean containers and provide remote services for clients distributed throughout the network.

Page 18: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Java Beans vs. EJB

• Can be either visible non-visible.

• Local Invocation • Synchronous Invocation

• Decidedly non-visible remote objects

• Remote and Local Invocation

• Synchronous and Asynchronous Invocation

• Object Pooling• Transparent Persistence• Supports Transactions• Support Relationships

between entity EJBs• J2EE Security Features

Page 19: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Advantages of EJB

• Simplifies the development of middleware components that are secure, transactional, scalable & portable.

• Simplifies the process to focus mainly on business logic rather than application development.

• Overall increase in developer productivity• Reduces the time to market for mission critical

applications

Page 20: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Purpose of EJBs

• SESSION Beans (verbs of the system): – Model task or workflow– Façade for Entity beans– Maintain conversational state with clients

• ENTITY Beans (nouns of the system):– Object/Relational (O/R) mapping– Transparent and implicit persistence with transaction

support• Message Driven Beans:

– Asynchronous communication with MOM– Conduit for non-J2EE resources to access Session and

Entity Beans via JCA Resource adapters.

Page 21: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

EJB serveraka Enterprise Java Server (EJS)

• EJS are analogous to the CORBA ORB.• Part of an application server that hosts EJB containers• EJBs do not interact directly with the EJB server• EJB specification outlines eight services that must be

provided by an EJB server:– Naming– Transaction– Security– Persistence– Concurrency– Life cycle– Messaging– Timer

Page 22: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Three Tier Architecture Using EJBs

MessageBroker

EJB Container

EntityEJBwCMP

SessionEJB

WEB Container

ServletLocal

Interface

RemoteInterface

EIS RDBMS

MsgDrvEJB

JDBC

JCAResouceAdapter

JMS

EIS other

Presentation Business Data

Queue/Topic JMS

EntityEJBwBMP

EntityEJBwCMP = Entity Bean with Container Managed PersistenceEntityEJBwBMP = Entity Bean with Bean Managed PersistenceMsgDrvEJB = Message Driven EJB

EIS other

Page 23: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

EJB Container

• Functions as a runtime environment for EJB components beans

• Containers are transparent to the client in that there is no client API to manipulate the container

• Container provides EJB instance life cycle management and EJB instance identification.

• Manages the connections to the enterprise information systems (EISs)

Page 24: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

EJB Container(cont’d)

Page 25: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

EJB Client

• Finds EJB container via JNDI.• Invokes methods on EJB beans.

Page 26: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

EJB components

Page 27: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

EJB Interfaces - Local and Remote

• Local Interface– Used for invoking EJBs within the same JVM (process)– @Local annotation marks an interface local– Parameters passed by reference

• Remote Interface– Used for invoking EJBs across JVMs (processes)– @Remote annotation marks an interface remote– Parameters passed by value (serialization/de-

serialization)Note: An EJB can be implement both interfaces if needed.

Page 28: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Business Interface

• Defines business methods• Session beans and message-driven

beans require a business interface, optional for entity beans.

• Business interface do not extend local or remote component interface unlike EJB2.x

• Business Interfaces are POJIs (Plain Old Java Interfaces)

Page 29: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Business Interface - examples

• Shopping cart that maintains statepublic interface ShoppingStatefulCart { void startShopping(String customerId); void addProduct(String productId); float getTotal();}• Shopping cart that does not maintain statepublic interface ShoppingStatelessCart { String startShopping(String customerId); //

return cartId void addProduct(String cartId, String productId); float getTotal(String cartId);}

Page 30: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Stateless Session EJB (SLSB)

• Does not maintain any conversational state with client

• Instances are pooled to service multiple clients• @Stateless annotation marks a been stateless.• Lifecycle event callbacks supported for stateless

session beans (optional) – @PostConstruct occurs before the first business

method invocation on the bean– @PreDestroy occurs at the time the bean instance is

destroyed

Page 31: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Stateless Session EJB example (1/2)

• The business interface:public interface HelloSessionEJB3Interface{

public String sayHello();

}

Page 32: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Stateless Session EJB example (2/2)

• The stateless bean with local interface:import javax.ejb.*;import javax.annotation.*;@Local({HelloSessionEJB3Interface.class}) @Stateless public class HelloSessionEJB3 implements

HelloSessionEJB3Interface{public String sayHello(){

return "Hello from Stateless bean“; }

@PreDestroy void restInPeace() { System.out.println(“I am about to die

now“);}

}

Page 33: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Stateful Session EJB (SFSB)

• Maintains conversational state with client• Each instance is bound to specific client

session• Support callbacks for the lifecycle events

listed on the next slide

Page 34: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

SFSB Lifecycle Events• @PostConstruct same as SLSB, once for each session • @PreDestroy same as SLSB, once for each session• @PostActivate container picks a instance from pool

and assigns to a specific client session • @PrePassivate container returns the instance to pool

after the session is terminated• @Init designates the initialization method of a stateful

session bean• @Remove causes the container to remove the stateful

session bean, first invoking the bean’s PreDestroy method if any

Page 35: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Stateful Session EJB – example (1/2)

• Define remote business interface (remote can be marked in bean class also) :

@Remote public interface ShoppingCart {

public void addItem(String item); public void addItem(String item);

public Collection getItems();

}

Page 36: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Stateful Session EJB – example (2/2)@Stateful public class CartBean implements

ShoppingCart { private ArrayList items; @PostConstruct public void initArray() { items = new ArrayList(); }

public void addItem(String item) { items.add(item); } public void removeItem(String item) { items.remove(item); } public Collection getItems() { return items; }

@Remove void logoff() {items=null;}}

Page 37: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Entity EJB (1) It is permanent.  Standard Java objects come into

existence when they are created in a program.  When the program terminates, the object is lost.  But an entity bean stays around until it is deleted.  In practice, entity beans need to be backed up by some kind of permanent storage, typically a database. A program can create an entity bean, then the program can be stopped and restarted.  The entity bean will continue to exist.  After being restarted, the program can again find the entity bean it was working with, and continue using the same entity bean.

Page 38: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Entity EJB (2)

• It is identified by a primary key.  Entity Beans must have a primary key.  The primary key is unique -- each entity bean is uniquely identified by its primary key.  For example, an "employee" entity bean may have Social Security numbers as primary keys.  You can only use entity beans when your objects have a unique identifier field, or when you can add such a field.

• Note: Session beans do not have a primary key.

Page 39: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Entity Bean Class

• @Entity annotation marks a class as Enity EJB• Persistent state of an entity bean is

represented by non-public instance variables• For single-valued persistent properties, these

method signatures are:<Type> getProperty()void setProperty(<Type> t)

• Must be a non-final concrete class• Must have public or protected no-argument

constructor

Page 40: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Entity Bean Class (cont.)

• No methods of the entity bean class may be final

• If entity bean must be passed by value (through a remote interface) it must implement Serializable interface.

Page 41: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Entity EJB

• CMP (Container Managed Persistence)– Container maintains persistence transparently

using JDBC calls

• BMP (Bean Managed Persistence)– Programmer provides persistence logic– Used to connect to non-JDBC data sources like

LDAP, mainframe etc.– Useful for executing stored procedures that

return result sets

Page 42: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Entity EJB – example (1)

@Entity // mark as Entity Beanpublic class Customer implements Serializable {

private Long id;private String name;private Collection<Order> orders = new HashSet();

@Id(generate=SEQUENCE) // primary keypublic Long getId() {return id;}public void setId(Long id) {this.id = id;}

Page 43: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Entity EJB – example (2)

@OneToMany // relationship between Customer and Orders

public Collection<Order> getOrders() {return orders;}public void setOrders(Collection<Order> orders) {

this.orders = orders;}

}

Page 44: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

EntityManager

• EntityManager API is used to:– create and remove persistent entity instances– to find entities by their primary key identity, and

to query over entities

• EntityManager supports EJBQL and (non-portable) native SQL

Page 45: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Entity Bean Life CycleEntity bean instance has four possible states:• New entity bean instance has no persistent identity,

and is not yet associated with a persistence context.• Managed entity bean instance is an instance with a

persistent identity that is currently associated with a persistence context.

• Detached entity bean instance is an instance with a persistent identity that is not (or no longer) associated with a persistence context.

• Removed entity bean instance is an instance with a persistent identity, associated with a persistence context, scheduled for removal from the database.

Page 46: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Example of Use of EntityManager API

@Stateless public class OrderEntry {@Inject EntityManager em;

public void enterOrder(int custID, Order newOrder) {

Customer cust = (Customer)em.find("Customer",

custID);cust.getOrders().add(newOrder);newOrder.setCustomer(cust);

}}

Page 47: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Message Driven EJB

• Invoked by asynchronously by messages

• Cannot be invoked with local or remote interfaces

• @MessageDriven annotation with in class marks the Bean message driven

• Stateless• Transaction aware

Page 48: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Message Driven EJB example

import javax.jms.Message;import javax.jms.MessageListener;import javax.ejb.MessageDriven;@MessageDrivenpublic class MessageDrivenEJBBean implements

MessageListener { public void onMessage(Message message) {

if(message instanceof MyMessageType1)doSomething(); // business method 1

if(message instanceof MyMessageType2)doSomethingElse(); // business method

2

}}

Page 49: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

EJB Query Language (EJBQL)

• EJBQL : RDBMS vendor independent query syntax

• Query API supports both static queries (i.e., named queries) and dynamic queries.

• Since EJB3.0, supports HAVING, GROUP BY, LEFT/RIGHT JOIN etc.

Page 50: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

EJBQL - examples• Define named query:@NamedQuery(

name="findAllCustomersWithName",queryString="SELECT c FROM Customer c WHERE c.name LIKE :custName"

)• Use named query:@Inject public EntityManager em;//..List customers =

em.createNamedQuery("findAllCustomersWithName").setParameter("custName", "Smith").getResultList();

Page 51: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

EJB Security Architecture

• Client Security:– The Enterprise JavaBean (EJB) server

automatically performs the steps necessary to ensure that deployed enterprise bean applications are only available to authorized users.

– One of these steps is authenticating clients that request access to EJB homes, beans, and individual methods on the beans.

Page 52: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Understanding EJB Security

• Two security measures that client must pass when you add security to EJB system – Authentication and Authorization.

• Authentication must be performed before any EJB method is called.

• Authorization occurs at the beginning of each EJB method call.

Page 53: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Authentication in EJB

• Two ways to perform authentication in EJB:– We can call authentication logic through Java

Authentication and Authorization Service (JAAS), a separate J2EE API.

– JAAS is a portable interface that enables you to authenticate and authorize users in Java. It allows to login to the system without knowing about the underlying security system being used.

Page 54: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Authorization in EJB

• Two ways to perform authorization in EJB:– With programmatic authorization, we can hard code

security checks into our bean code.– With declarative authorization, the container performs

all authorization checks for us.

Page 55: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Deploying EJBs

• EJB 3.0 annotations will replace EJB 2.0 deployment descriptors in almost all cases

• Values can be specified using annotations in the bean class itself

• Deployment descriptor may be used to override the values from annotations

Page 56: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

Some EJB Servers

Company Product

• IBM WebSphere• BEA Systems BEA WebLogic• Sun Microsystems Sun Application Server• Oracle Oracle Application Server• JBoss JBoss

Page 57: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

References (1)• SUN EJB Specifications

http://java.sun.com/products/ejb/docs.html• IBM RedBooks

http://www.redbooks.ibm.com/redbooks.nsf/redbooks/• IBM WebSphere Developer Technical Journal

http://www.ibm.com/developerworks/websphere/• Oracle Technology Network

http://www.oracle.com/technology/tech/java/index.html

Page 58: J2EE and Enterprise Java Beans Ajay Bajaj Kunal Mehta Arun Marioli Dhairya Shah.

References (2)• Java.net http://www.java.net/• JavaWorld

www.javaworld.com/channel_content/jw-ejbs-index.shtml

• TheServerSidehttp://www.theserverside.com/

• Richard Monson-Haefel, Enterprise JAVABEANS • Tate, Clark, Lee, Lisnkey, BITTER EJB• Feghhi, Jalal, Web developer's guide to

JavaBeans