Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating,...

56
IBM Research – Zurich © 2011 IBM Corporation Business-Driven Software Engineering (13.Vorlesung) Pre EJB 3.0 Enterprise JavaBeans Thomas Gschwind <thg at zurich.ibm.com>

Transcript of Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating,...

Page 1: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Business-Driven Software Engineering (13.Vorlesung)Pre EJB 3.0 Enterprise JavaBeansThomas Gschwind <thg at zurich.ibm.com>

Page 2: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Agenda

� Session Beans

� Message-Driven Beans

� Entity Beans– CMP Entity Beans– BMP Entity Beans

2

Page 3: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

EJB 2.x vs. EJB 3.0

� Compatibility– Every EJB 3.0 server must also support the EJB 2.1 specification

� Mixing clients and servers– EJB 2.1 Client � EJB 2.1 Bean– EJB 2.1 Client � EJB 3.0 Bean– EJB 3.0 Client � EJB 2.1 Bean– EJB 3.0 Client � EJB 3.0 Bean

� Conceptual difference– No big difference, EJB 3.0 provides many simplifications– EJB 3.0 relies on JDK 1.5 to provide these simplifications– Many of the EJB 3.0 simplifications already provided for EJB 2.x by

the xdoclet project (uses JavaDoc instead of code annotations)

3

Page 4: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Constituents of a 2.x EJB

� EJB Implementation Class

� Remote Interface

� Local Interface

� Home Object

� Local Home Interface

� Deployment Descriptor

� EJB Object (container generated)

- Similar to 3.0

- Almost same

- Almost same

- Missing in 3.0

- Missing in 3.0

- Typically more elaborate

- Similar to 3.0

4

Page 5: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

The Bean Implementation

� EJB Specification defines standard interfaces to be implemented– Define methods for the bean’s management– In EJB 1.x and 2.x these interfaces must be implemented by the

bean– In EJB 3.0, implementation of these interfaces is optional

Th. Gschwind, Business-Driven Software-Engineering5

….SessionBean

….EntityBean

….MessageDrivenBean

….EnterpriseBean

….Serializable

Page 6: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

EJB 2.x Session Bean

� Must implement the ….SessionBean interface� Implementation of bean’s business logic� Implements callbacks necessary for the EJB container� Defines methods to allow the container to manage the

bean– Initialization– Destruction– Passivation– Activation

6

Page 7: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Remote Interface

� Exports the bussiness methods that may be invoked by clients

� Two flavors– Remote interface may be invoked by local and remote clients– Local interface may be invoked by local clients only

7

Page 8: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

The Home Interface

� Each Home Object exposes a home interface

� Home interface must extend ….EJBHome

� Specifies methods for creating, locating, removing beans

� Must be remotely accessible

� Must adhere to all RMI-IIOP conventions

� In EJB 1.x and 2.x this is mandatory

� Optional for EJB 3.0 session and message-driven beans(use the same creation and removal)

� Java Persistence API Entities use a different API

Th. Gschwind, Business-Driven Software-Engineering8

Page 9: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

The Home Object

� Clients deal only with EJBObjects

� EJBObjects cannot be instantiated by clients directly

� Home object is responsible for– Creating– Finding, and– Removing EJB objects

� Home objects are specific to a given bean

Th. Gschwind, Business-Driven Software-Engineering9

Page 10: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Home Interface & Home Object

Th. Gschwind, Business-Driven Software-Engineering10

EJB Container/Server

Enterprise Bean

2: create EJB Object

Client

Home Interface

Home Object

1: Create bean

4: Return EJB Object ref.

EJB ObjectRemote

Interface

3: initialize

Responsibility of Container

Page 11: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

EJB 2.1 Bean Implementation Caveats

� Must not list home & remote interface in the class‘s implements clause

� Otherwise implementation object might be accidentally passed to clients

� Clients must only interact through Home & EJB objects

11

Page 12: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

The SessionContext

� Container has already reference to bean

� SessionContext allows bean to interact with container – Retrieve home interfaces– Get and set transaction attributes– Obtain security attributes

� The setSessionContext method– Associates Bean with SessionContext– Typically, reference is stored in a local variable

12

Page 13: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

The SessionContext

� EJBContext provides methods to obtain– The home reference– Transaction attributes– Security information

Th. Gschwind, Business-Driven Software-Engineering13

public interface javax.ejb.SessionContextextends javax.ejb.EJBContext{

public javax.ejb.EJBLocalObject getEJBLocalObject() ;public javax.ejb.EJBObject getEJBObject();

}

Page 14: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Cookie Server Object Model

14

<<interface>>….Serializable

<<interface>>….Remote

<<interface>>….EnterpriseBean

<<interface>>….SessionBean

CookieServerBean

<<interface>>….EJBHome

<<interface>>CookieServerHome

<<interface>>….EJBObject

<<interface>>CookieServer

Cookie

EJB Object

Cookie

Home Object

Java Distribution

EJB Distribution

That’s us

EJB Server Generated

Page 15: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Implementation (cont’d)

15

import javax.ejb.SessionBean;import javax.ejb.SessionContext;public class CookieServerBean implements SessionBea n {

private SessionContext ctx;public void setSessionContext(SessionContext ctx) {

this.ctx=ctx; }

public void ejbCreate() { ….println("ejbCreate()"); }public void ejbRemove() { ….println("ejbRemove()"); }public void ejbActivate() { ….println("ejbActivate( )"); }public void ejbPassivate(){ ….println("ejbPassivate ()");}

public String getCookie() {System.err.println("getCookie()");return " Beam me up, Scotty, there is no intelligent life… ";}

}

Page 16: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Remote Interface

� Provides the business methods (functionality) of the bean

� Similar to RMI Remote interface

16

import java.rmi.RemoteException;import javax.ejb.EJBObject;

public interface CookieServer extends EJBObject {public String getCookie() throws RemoteException;// inherits methods to remove and compare EJB objec ts

}

Page 17: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Home Interface

� Creation and removal of beans

� New compared to Java RMI

17

import java.rmi.RemoteException;import javax.ejb.EJBHome;import javax.ejb.CreateException;

public interface CookieServerHome extends EJBHome {CookieServer create()throws RemoteException, CreateException;// remove method inherited from EJBHome

}

Page 18: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Deployment Descriptor

18

<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBean s 2.0//EN“"http://java.sub.com/dtd/ejb-jar_2_0.dtd">

<ejb-jar><enterprise-beans>

<session><ejb-name>CookieServer</ejb-name><home>ch.unizh.bdse.CookieServerHome</home><remote>ch.unizh.bdse.CookieServer</remote><ejb-class>ch.unizh.bdse.CookieServerBean</ejb-clas s><session-type>Stateless</session-type><transaction-type>Container</transaction-type>

</session></enterprise-beans><ejb-client-jar>CookieClient.jar</ejb-client-jar>

</ejb-jar>

Page 19: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

The Cookie Client

� Get a reference to the JNDI interface– Possibly specify system properties where to locate the repository

� Look up the bean’s home object

� Use the home object to create an EJB object

� Call business methods on EJB object

� Remove the EJB object

19

Page 20: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

The Cookie Client (cont’d)

20

import java.rmi.*;import java.util.*;import javax.naming.*; public class CookieClient {

public static void main(String[] args) throws Excep tion {Properties props=System.getProperties();Context ctx=new InitialContext(props);Object obj=ctx.lookup("CookieHome");CookieServerHome h=(CookieServerHome)

PortableRemoteObject.narrow(obj,CookieServerHome.cl ass);CookieServer s=h.create();System.out.println(s.getCookie());s.remove();

}}

Page 21: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Deployment & Use

21

Enterprise Bean

Home Interface

Remote Interface

Supplied by Bean

Developer

EJB Container/Server

Client

implements

Home Object EJB Object

implements

Generated by

Container

1. create bean

1. create bean

2. use bean

2. use bean

Page 22: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Pre EJB 3.0 Bean Interaction

22

EJB Container/Server

Enterprise Bean

Client

Home Interface

Home Object

EJB ObjectRemote

Interface

JNDI

1/2.Retrieve Home Object reference3. Request EJB object creation4. Create new EJB object5. Return EJB object6. Invoke business method7. Invoke container8/9.Delegate request to bean10. Invoke container11. Return result

1

2

3

45

68/9

Container Services

7/10

11

Page 23: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Agenda

� Session Beans

� Message-Driven Beans

� Entity Beans– CMP Entity Beans– BMP Entity Beans

23

Page 24: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

EJB 2.x MDB Implementation

� Must implement– javax.ejb.MessageDrivenBean– Javax.jms.MessageListener

� Methods to be implemented– void ejbCreate();

– void ejbRemove();

– void onMessage(Message message);– void setMessageDrivenContext(MessageDrivenContext ctx);

24

Page 25: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

EJB2.1 Message Driven Bean

25

public class LogBeanimplements MessageDrivenBean, MessageListener {

private MessageDrivenContext ctx;public void setMessageDrivenContext(… ctx) {

this.ctx=ctx; }public void ejbCreate() { }public void ejbRemove() { }public void onMessage(Message msg) {

if(msg instanceof TextMessage) {TextMessage tm=(TextMessage)msg;try {

System.err.println("received "+tm.getText());} catch(JMSException e) {}

}}

}

Page 26: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Agenda

� Session Beans

� Message-Driven Beans

� Entity Beans– CMP Entity Beans– BMP Entity Beans

26

Page 27: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Entity Beans

� Mainly used in EJB 1.x and 2.x systems– EJB 1.x Entity Beans cumbersome, slow (lack of local interfaces)– EJB 2.x Entity Beans “only” cumbersome to use

� Tips:– Use coarse grained objects– Optimize data access– Use Java Persistence API instead

Th. Gschwind, Business-Driven Software-Engineering27

Page 28: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Constituents of an EJB (pre 3.0)

� EJB Implementation Class

� Business methods– Remote Interface– Local Interface

� Deployment Descriptor

� EJB Object (container generated)

� Lifecycle methods (optional in EJB 3.0)– Home Interface– Local Home Interface

� Home Object (container generated)

Th. Gschwind, Business-Driven Software-Engineering28

Page 29: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Object Relational Mapping� More sophisticated than

serialization

� Object-Relational Mapping– Store objects in a database

– Retrieve data from db when object is created

� Differentiate– Bean data

– Bean instance

29

accountID owner balance

1 John Doe -104.67

2 Mark Smith 985.00

3 … …

Account Classint accountId

string owner

double balance

Account DataaccountId=1

owner=“John Doe”

Balance=-104.67

Page 30: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Entity Beans

� Provide a view into a database(beans know how to store themself)

� Bean update � database update

� Synchronize bean data– ejbLoad() reads data from persistent storage– ejbStore() saves data to underlying storage

� These methods are called by the container when necessary

� Bean data may be modified externally

30

Page 31: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Requirements

� Have a home and a remote interface

� Entity bean class maps to a database representation

� Must implement some standard callbacks

� Provide a primary key class (must be serializable)

31

Page 32: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Pooling of Entity Beans

� Creating & destroying beans for each request is inefficient

� An entity bean defines only the kind of data to be stored– E.g., account#, account holder, balance– Entity bean can represent any account

=> Containers reuse beans

32

Page 33: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Reusing Beans

� Simply load the new data

� Problem– Bean may hold references to local resources

� Solution– Use callbacks to activate/deactivate bean– ejbActivate() ... bean is taken out of pool– ejbPassivate() ... bean is returned to pool

33

Page 34: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Activation & Passivation

34

Container Bean Instance

1. ejbStore()

2. ejbPassivate()Passivation entails

a state save.

1. ejbActivate()

2. ejbLoad()Activation entails a

state load.

Page 35: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Lifecycle of an Entity Bean

35

Pooled

Bean Instance Does Not

Exist

ejbHome

Class.newInstancesetEntityContext

unsetEntityContext

Ready

ejbFind

ejbLoad ejbStore

ejbActivateejbLoad

ejbStoreejbPassivate

ejbRemoveejbCreate

ejbPostCreate

Page 36: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Entity Bean Creation & Removal

� Creation of entity bean should construct a row in a database

36

EJB Container/Server

Enterprise Bean

2. ejbCreateClient Home Object

1. create4: Return EJB Object ref.

EJB Object

4. return PK4. Create EJB obj.

5. return

3. Createdb data

Page 37: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Entity Bean Lookup

� Entity beans may be looked up

� Accomplished using finder methods– Listed in Home interface– Return primary keys of matching beans

37

Page 38: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Entity Contexts� Provides additional information to EJB Context� Set using setEntityContext() and unsetEntityContext()� getEJBLocalObject(), getEJBObject()

– EJB way of saying this– Remember, this may not be passed to clients

� getPrimaryKey– Primary key currently associated with this instance– Necessary for activation (after bean was passivated)– Useful for ejbLoad() and ejbRemove()

38

Page 39: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

CMP Entity Beans

� Defined independently of the containers data representation– Serialization– Database– Object Database

=> No persistence logic must be present in bean

=> Developer does not declare fields

=> Persistence logic generated by the container

39

Page 40: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

CMP Entity Bean Object Model

40

<<interface>>….Serializable

<<interface>>….EnterpriseBean

<<interface>>….EntityBean

CMP Entity Bean

CMP Entity Bean Subclass

Java Distribution

EJB Distribution

That’s us

EJB Server Generated

Page 41: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Accessing the Data

� How do we access the data if not declared by the class

� Declare abstract getter & setter methods supplied by the container

41

public abstract class Account implements EntityBean {// no fields//abstract getter & setter methodspublic abstract long getAccountId();public abstract void setAccountId(long id);public abstract String getOwner();// ...

}

Page 42: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Creating a CMP Entity Bean

� ejbCreate(...)For CMP Entity Beans database row is created by container. Just initialize the data using the set* methods.

� ejbPostCreate(...)Is called after the container has associated the bean with an EJB object. Complete initialization of the bean.

42

Page 43: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Looking up CMP Entity Beans

� Specify finder methods in Home interface

� Corresponding query is to be defined in the deployment descriptor

� Query is defined using EJB-QL

� Example:– public Collection findBigAccounts(int min);– SELECT object(a) FROM Account AS a WHERE a.balance>?1

43

Page 44: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Agenda

� Session Beans

� Message-Driven Beans

� Entity Beans– CMP Entity Beans– BMP Entity Beans

44

Page 45: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

BMP Entity Beans

� Bean is responsible for persisting its state– Necessary if CMP mechanisms too simple

� Implement callbacks to save and load data

� Callbacks invoked by the container when necessary– ejbLoad()– ejbStore()

45

Page 46: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

BMP Entity Bean Object Model

46

<<interface>>….Serializable

<<interface>>….EnterpriseBean

<<interface>>….EntityBean

BMP Entity Bean

Java Distribution

EJB Distribution

That’s us

Page 47: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Creating a BMP Entity Bean

� ejbCreate(...)For BMP Entity Beans database needs to be created by bean.

� ejbPostCreate(...)Is called after the container has associated the bean with an EJB object. May pass EJB reference to other beans.

47

Page 48: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Looking up BMP Entity Beans

� Entity beans may be looked up

� Accomplished using finder methods– Listed in Home interface– Return primary keys of matching beans

� Query is to be implemented as part of the bean

48

Page 49: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

The BMP Cookie Entity Bean

� Manage a database of fortune cookies

� Requirements– Create cookies– Count how often various cookies have been returned– Look up cookies

49

Page 50: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Bean Managed State Fields

50

public class CookieBean implements EntityBean {private EntityContext ctx;private int cookieID;private String cookie;private int stat;

public CookieBean() {}

public int getCookieID() { return cookieID; }public void setCookieID(int id) { cookieID=id; }

public String getCookie() { return cookie; ++stat; }public void setCookie(String c) { cookie=c; }

public int getStat() { return stat; }

… // other business methods}

Page 51: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Creation

51

public class CookieBean implements EntityBean {…

public Connection getConnection() throws Exception {Context ctx=new InitialContext();javax.sql.DataSource ds=(javax.sql.DataSource)

ctx.lookup("java:comp/env/jdbc/ejbPool");return ds.getConnection();

}

public CookiePK ejbCreate(int cookieID, String cook ie)throws CreateException {

this.cookieID=cookieID; this.cookie=cookie; stat=0;try {

Connection c=getConnection();…

Page 52: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Creation (cont’d)

52

…PreparedStatement stmt=c.prepareStatement("insert into cookies(cookieID,cookie,stat) "+"values(?,?,?)");stmt.setInt(1,cookieID);stmt.setString(2,cookie);stmt.setInt(3,stat);stmt.executeUpdate();return new CookiePK(cookieID);

} catch(Exception e) {throw new CreateException(e.getMessage());

} finally {try { if(stmt!=null) stmt.close(); } catch(…) {}try { if(c!=null) c.close(); } catch(…) {}

} }…

}

Page 53: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Other Methods

� These methods must be implemented similar to ejbCreate()– ejbRemove()– ejbLoad()– ejbStore()– ejbFindByPrimaryKey()

� Others (e.g., ejbPostCreate()) may be left blank

53

Page 54: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Summary

� Session Beans

� Message-Driven Beans

� Entity Beans– CMP Entity Beans– BMP Entity Beans

54

Page 55: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Review Questions

� Explain the difference between EJB2.0 and EJB3.0– Session Beans– Message Driven Beans– Entity Beans and JPA Entities

� What is the difference between EJB2.0 container managed and bean managed entity beans

55

Page 56: Business-Driven Software Engineering (13.Vorlesung) Pre ... · Specifies methods for creating, locating, removing beans Must be remotely accessible Must adhere to all RMI-IIOP conventions

IBM Research – Zurich

© 2011 IBM Corporation

Outlook

� Repetitorium (practical part)

� Lab submission

56