Enterprise JavaBeans Fundamentals

egyptiannorweiganInternet και Εφαρμογές Web

31 Οκτ 2013 (πριν από 3 χρόνια και 5 μήνες)

63 εμφανίσεις

©1996
-
2000 jGuru.com

Enterprise JavaBeans
Fundamentals

2

Agenda


Enterprise JavaBeans defined


EJB and Distributed Computing


EJB Architecture


Entity beans


Session bean


Deployment


EJB Clients

©1996
-
2000 jGuru.com

Enterprise JavaBeans: Defined

4

What is Enterprise JavaBeans

The Enterprise JavaBeans architecture is a
component architecture for the development and
deployment of object
-
oriented distributed
enterprise
-
level applications. Applications written
using the Enterprise JavaBeans architecture is
scalable, transactional and multi
-
user secure.
These applications may be written once, and
deployed on any server platform that supports the
Enterprise JavaBeans specification

Sun Microsystems Enterprise JavaBeans™ Specification,
v1.1
, Copyright 1999 by Sun Microsystems, Inc
.

5

In English Please!


Enterprise JavaBeans is a specification


(a piece of paper) not a product


As is XML, CORBA, TCP/IP


Enterprise JavaBeans is Java based


Defined by Sun Microsystems


Applications are written in Java


Enterprise JavaBeans is distributed objects


Similar to CORBA | Java RMI (JRMP) | Microsoft MTS


Enterprise JavaBeans is components


Similar to regular JavaBeans (similar but not the same)


Similar to COM/DCOM/COM+


Enterprise JavaBeans products are Transactional
Monitors


Similar to CICS | TUXEDO


A complete environment for a distributed object

6

Enterprise JavaBeans


Simple Programming Model


Attribute based programming


Focus on Business Logic


Simple API


Well defined Lifecycle


Portable


Specification ensures basic services


Component Packaging (JARs and XML DD)


Java

7

WORA


Write
-
Once, Run Anywhere within
Middleware


Middleware provides all services


Instance management, transactions, concurrency,
persistence


Beans stay simple!

8

EJB Spec


Spec developed by Sun and dozens of
competing vendors


IBM, Oracle, BEA, WebLogic, ...


Interoperable
--

a miracle!


Why did they cooperate?


See next slide...

9

The Common Enemy Phenomenon


10

EJB Advantages


With EJB, you can write a business object
and easily make it


Persistent


Distributed


Transactional


Secure


Multithreaded

11

Persistent


Beans need to load and store data


You can let the server do it


(Container
-
Managed Persistence)


You can do it yourself


(Bean
-
Managed Persistence)

12

Transactional


Support for distributed transactions


You can let the Server manage all
transactions


You will if you know what’s good for you


You can give it hints in deployment descriptor

13

Secure


SSL/RMI protects transmitted data


Client
-
Server architecture protects


proprietary code


backend database


SSL authenicates client, server


ACLs provide fine
-
grained control of access
to objects, methods, services

14

Multithreaded


Programmer delegates all responsibility for
multithreading to server


Programmer literally can’t spawn a thread


Program designer and/or sysadmin
establishes multithreading policies


Server enforces them invisibly

15

Naming Services


JNDI


Wrapper for many naming services


CORBA, RMI, etc.

16

CORBA: Sorta Porta(ble)


CORBA: Complex Programming Model


Different API for each Service


Explicit use of service APIs


Lifecycle depends on services used


Fairly Portable


Many Languages, many platforms (pro and con)


Non
-
Uniform support of Services


17

CORBA and EJB


Transport


EJB uses RMI interface, RMI uses IIOP


CORBA 3.0 promises object compatibility
with EJB


Not quite sure what that means


Some EJB Servers contain an ORB


All EJB Objects are also CORBA objects

18

CORBA and EJB (Cont.)


All EJB Servers use CORBA Transactions
(via JTS)


That means that any client can make a distributed
transaction that includes both CORBA and EJB
Objects


Not an either
-
or decision


You can have both EJB and CORBA working
together in a single system

19

What’s in a name?


Enterprise Java Beans has absolutely nothing to
do with JavaBeans


Except that both are Java
-
based component architectures


EJB is server
-
side, JB is client
-
side


EJB has no GUI, JB usually has GUI


JB is basically naming conventions for fully
powered Java classes


EJB rules are much more rigid


EJB classes are less powerful on their own, but
more powerful in a container

20

’Tis but thy name that is my enemy


EJB is all about really poor names


Architecture makes sense, object names
don’t


“Home” is a factory


“Container” is a helper or wrapper


“EJB Object” is an object but is not an EJB


"Enterprise JavaBean" is not a JavaBean

21

Disadvantages of N
-
Tier
Architecture


Learning curve


$$ cost of products


$$ cost of extra servers to achieve
performance


time + $$ cost of maintenance


Object
-
relational mapping



Basically, app servers are good for large,
general solutions (e.g. multiple data
sources, multiple applications)

©1996
-
2000 jGuru.com

EJB Architecture

23

EJB Roles


Bean developer:

creates JAR with:


Remote interface with business functions


Home for accessing instances of bean


Bean itself


Properties and descriptor


Assembler:

integrates beans into clients


Deployer:

modifies and deploys beans


Organization
-
specifics, ie security

24

EJB Roles (cont.)


Server provider

provides Server run
-
time


Container provider:

provides tools and
containers


Creates container classes that wrap bean


Manage installed beans

25

The EJB Container


Think of the container as the server, holding
your objects


Containers host enterprise beans


Containers isolate beans from clients


Intercept client requests


Set up transactions, security, persistence, etc.
before and after calling EJB methods


Beans can also call methods of the container
interface to get services


Containers provide JNDI services too

26

27

Component API: Interfaces and
Classes


Home Interface


Extends javax.ejb.EJBHome


Provides remote access to create, find, remove beans


Remote Interface


Extends javax.ejb.EJBObject


Provides remote access to business methods


Bean Class


Extends a javax.ejb.EnterpriseBean type


Implements business logic and other functionality

28

Implements

Invokes

Creates / uses

EJB Architecture

Client

Server

Home Interface

(Factory)

EJB Object

(Wrapper)

Enterprise

Java Bean

(Biz Logic)

Remote

Interface

Container

RMI

RMI

Naming Service

You write this

29

Bean provider: What to write?


Remote Interface


extend EJBObject interface


Define business method signatures


Home Interface


extend EJBHome interface


Define create signatures


May define findBy signatures for entities

30

What to write (cont.)?


Enterprise Bean Class


implement EntityBean or SessionBean


Implement business method signatures


Does not need to implement Remote Interface


not abstract


Implement ejbCreate methods matching Home
create


1 ejbCreate for every Home.create


N.B.: “create” in home interface, “ejbCreate” in Bean

31

Remote Interface

import javax.ejb.EJBObject;

import java.rmi.RemoteException;


public interface Customer extends EJBObject {



public Name
getName()

throws RemoteException;


public void
setName(Name name)

throws
RemoteException;


public Address
getAddress()

throws RemoteException;


public void
setAddress(Address address)

throws
RemoteException;


}

32

Home Interface

import javax.ejb.EJBHome;

import javax.ejb.CreateException;

import javax.ejb.FinderException;

import java.rmi.RemoteException;


public interface CustomerHome extends EJBHome {




public Customer create(Integer customerNumber)


throws RemoteException, CreateException;




public Customer findByPrimaryKey(Integer customerNumber)


throws RemoteException, FinderException;



public Enumeration findByZipCode(int zipCode)


throws RemoteException, FinderException;

}

33

Bean Class

import javax.ejb.EntityBean;


public class CustomerBean implements EntityBean {


Address myAddress;


Name myName;


CreditCard myCreditCard;



public Name getName() {


return myName;


}


public void setName(Name name) {


myName = name;


}


public Address getAddress() {


return myAddress;


}


public void setAddress(Address address) {


myAddress = address;


}



...

}

34

Types of Beans


Entity Beans


Represent data in the database


Include behavior (business methods)


Session Beans


Represent tasks or processes


Do not represent data, but can access data


Manage the interactions of other beans

35

Home Interface


Defined by Bean developer


Implemented by server tools
(autogenerated)


Must extend interface EJBHome


EJBMetaData getEJBMetaData()


void remove(Handle ejbHandle)


void remove(Object primaryKey)


Must provide your own create() methods


Foo create()


Foo create(Bar b, Baz z)…

36

Home Interface: Entity Beans


Entity Beans are persistent, therefore they
need more than a “create” method


Need findXXX methods


public Foo findByPrimaryKey(Object key);


public Foo findByBar(Bar bar);


public Enumeration findOverdrawnAccounts();


Implement ejbFindXXX methods in bean


N.B.: “find” in home interface, “ejbFind” in Bean

37

Remote Interface


Written by developer


Defines methods accessible by client


Your business methods go here


extends javax.ejb.EJBObject


standard methods provided by all EJBs


getEJBHome(), getPrimaryKey(), getHandle(),
remove(), isIdentical(EJBObject obj)

38

Remote Interface vs. EJBObject vs.
EJB


Developer writes Remote Interface


Tool uses RI to automatically generate the
EJBObject class


Developer writes the EJB source file


N.B.: The EJB does
not

implement the Remote
Interface


However, you still must implement all the business
methods


Lame
-
o
-
rama: no type safety provided by compiler


Better: if EJB tool auto
-
created a new interface for the
EJBObject (oh well)

39

Implementing the EJB


Implements all your business methods


Must also implement


ejbCreate() methods


ejbFind() methods (for Entity Beans)


Also callback methods


ejbRemove()


ejbActivate()


ejbPassivate()


Implement which interface?


javax.ejb.SessionBean


javax.ejb.EntityBean

40

Interfaces and Implementations

EJBObject

getEJBHome()

getPrimaryKey()

getHandle()

isIdentical()

remove()

deposit()

getBalance()

Remote Interface

deposit()

getBalance()

EJB

ejbCreate()

ejbRemove()

ejbActivate()

ejbPassivate()

deposit()

getBalance()

Home Interface

create()

remove()

©1996
-
2000 jGuru.com

Beans and Persistence

42

Persistence


Container
-
Managed

Persistence


Server reads values from your bean


Server stores/loads data for you


Very easy to write
-

just define data and server
magically takes care of persistence

43

Container
-
Managed Persistence
(CMP)


Persistence is automatic


inserts, updates, and deletes are automatic


transactions managed automatically


server reads/writes your bean instance variables


Server also informs you before/after it's done
something


you implement callback methods

44

Container
-
Managed Persistence
(CMP) cont.


Easier to write beans


Focus on business logic, not persistence


But, requires sophisticated, vendor
-
specific data
mapping tools


Components more portable


not backend
-
specific


shrink
-
wrapped components

45

Bean
-
Managed Persistence


Bean
-
Managed Persistence


You code access database directly


Callback methods dictate when to insert, update,
delete


More control over persistence, performance


Much harder to write


Don’t need sophisticated data mapping
tools

46

Entity Beans


Model entities in a system


represent their data and associated behavior


one or many relational database tables


an object in an object database


an entity in a legacy system


Nouns: People, Places or Things


Customer, Employee, Student


City, Building, Hotel Room


Order, Organization, Health Benefit

47

Session Beans


Not persistent, but can access database


Model tasks, process or agents


Charge a credit card


Process a stock purchase


Perform hotel reservations


Manage interactions of other beans

48

Stateless Session Beans


Perform transitive tasks


Independent business methods


Act on method arguments, not bean state


Similar to procedures in traditional TPM systems


Most performant bean type


Not dedicated to one client

49

Stateful Session Beans


Act on behalf of one client


Extension of the client


Agent that performs work for the client


Interdependent business methods


Bean has conversational state


Method depend on conversational state


Dedicated to exactly one client

©1996
-
2000 jGuru.com

EJB Deployment

51

Function of a Deployment
Descriptor


Describe bean(s) to the container


interfaces and class


type of bean (entity or session)


identify primary key & container
-
managed fields


Declare runtime behavior


transaction attributes of methods


authorization access to method


persistence type (BMP vs. CMP)


Written in XML

©1996
-
2000 jGuru.com

EJB Clients

53

Types of Clients


Enterprise beans


J2EE Application Components


Java Applications


Java Applets


Servlets


JSP

54

Example: J2EE Application
Component

CustomerHome home;

Object ref;


// Obtain a reference to the CustomerHome

ref = jndiContext.lookup("java:comp/env/ejb/Customer");


// Cast object returned by the JNDI lookup to the

// appropriate datatype

home = PortableRemoteObject.narrow(ref,
CustomerHome.class);


// Use the home interface to create a

// new instance of the Customer bean.

Customer customer = home.create(customerID);


// Use a business method on the Customer.

customer.setName(someName);

55

Messaging Beans


New with EJB 2.0


Use JMS for asynchronous message queue
services


Allows asynchronous response


I will gladly pay you Tuesday for a hamburger
today


Get some of the missing Thread functionality back


Not completely supported yet


Must sit on a message queue product

56

Value Objects


Fact:


EJBs are RMI remote objects


Problem:


Calling each setter or getter goes across the network


Slow if you're accessing more than one value at once


Solution:


Value object which mimics the EJB, only it isn't remote


EJB has methods to get and set value object


Client sets/gets values locally, sends/receives
en masse

57

Online Resources


jGuru EJB FAQ


http://www.jguru.com/faq/EJB


Sun EJB Page


http://java.sun.com/products/EJB


EJBNow


http://www.ejbnow.com/

58

Thanks To


Richard Monson
-
Haefel


Dave Orchard


Random Walk Computing