+ All Categories
Home > Documents > EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

Date post: 18-Jan-2016
Category:
Upload: nora-atkins
View: 214 times
Download: 0 times
Share this document with a friend
Popular Tags:
23
EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04
Transcript
Page 1: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

EJB Overview:Constraint Types and Enforcement in JBoss

Elissa NewmanFluid Meeting6/3/04

Page 2: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

2

EJB 2.0 Overview

Bean Types Entity (EB) – represent persistent state that is stored in

a database or other storage. Usually represent “nouns”. Can be accessed concurrently. Long-lived.

Session (SB) – models a workflow, or set of actions that a user may want to perform (actions)

Stateless – • Return values from methods do not depend on instance state • Instance state may be recorded, but it will not be persisted• A single instance can service multiple clients (long-lived)

Stateful – • Maintains conversational state between method calls• Dedicated to a single client for life of an instance • Cannot be accessed concurrently (vendor-specific)

Message-Driven (MDB) – process asynchronous (remote) messages for multiple clients, one message at a time

Page 3: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

3

Ways to Access Beans

Home Interfaces – Lifecycle methods for use by client (remote or local)

Bean Interfaces – Business methods available for use by client (remote or local)

Handle – a serializable reference to a remote EJB object Can get back same type of SB or unique

instance of EB

Page 4: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

4

The Big Picture: Remote Invocation

•The container provides varying levels of services for the bean, including persistence, transaction management, naming directory service, and more

Page 5: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

5

Remote EJB Class Diagram

Page 6: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

6

Local EJB Class Diagram

Page 7: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

7

Implementation Options

Container (CMP) vs. Bean managed persistence (BMP) Responsibility for writing data to

database, maintaining relationships between entity beans, implementing finder methods

Container (CMT) vs. Bean managed transactions (BMT) Responsibility for transaction support and

defining transaction boundaries

Page 8: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

8

Local vs. Remote Interfaces

Local – intra-JVM Pros: saves overhead of remote calls, pass by reference Cons:

restricts deployment configurations pass by reference semantics can lead to data corruption

Remote – inter-JVM, uses RMI Pros: Location transparency, pass by value, MetaData

access Cons:

huge overhead (even intra-JVM) casting requires use of narrow() method parameter types must be Serializable need to handle RemoteExceptions

Page 9: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

9

Lifecycle Methods

All: ejbCreate(…) ejbRemove()

For SBs and EBs: ejbFindByPrimaryKey()

EB only: ejbPostCreate() -- 1 per create() method ejbFind*() methods ejbSelect*() methods ejbLoad(), ejbStore() – for BMP only ejbSet/UnsetEntityContext() ejbHome()

Stateful SB only: setSessionContext() ejbActivate() ejbPassivate()

MDB only: onMessage()

Page 10: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

10

Lifecycle of an Entity Bean Instance

Page 11: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

11

Lifecycle of a Stateless Session Bean Instance

Page 12: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

12

Lifecycle ofa Stateful Session BeanInstance

Page 13: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

13

Lifecycle of a MDB instance

Page 14: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

14

Major EJB Constraint Types

A _____ must inherit from _____ interface/class or one of its children

Certain lifecycle methods (per bean type) must exist and have (or not have) certain modifiers, parameters, return types

You shouldn’t use this <set> of methods for this <purpose>, instead use <other set>

Never call ____ from _____ When ___ is called, do something

Page 15: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

15

Some “Interesting” Constraints and Guidance Remote Interfaces (and related)

Having both a remote and local interface is allowed, but not recommended

Question: When/why would this happen?

Should use EJBObject.isIdentical() instead of Object.equals()

Because remote objects can have additional networking state, but may still represent the same object

Remote interfaces may access persistence fields in a Bean class, but not relationship fields (references to other Beans)

BMP should use Collection type, although they are allowed to use Enumeration type

Make more compatible with CMP, which only uses Collection

Page 16: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

16

“Interesting” (cont.)

Primary Keys (and related) PKs only set once

In CMP, by container during creation In BMP, in ejbCreate() method

ejbCreate() has a return type same as the Primary Key type (specified in XML file)

Always returns null for CMP Must return the primary key for BMP

For BMP, should use EntityContext object to get the primary key, even if it is just a field in the EB

Data in bean could be stale Rarely used outside of ejbLoad() and ejbStore() methods

PK classes must implement equals() and hashCode()

Page 17: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

17

“Interesting” (cont.)

Inter-EB Relationships (and related) If an entity bean is the target of a container-managed

relationship, then it must have local interfaces and be collocated with the related bean(s)

Inter-EB relationships are not initialized until the ejbPostCreate() method

Primary key is required for use as a foreign key in other EBs, and may not be initialized until ejbCreate() has been called

Relationship fields can only access local interface of a bean

When creating related entities, need to preserve referential integrity by assigning relationship fields after new object creations

Otherwise, unconnected entries in database

Relationship fields with >1 multiplicity may never return null Instead, they return an empty Collection

Page 18: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

18

“Interesting” (cont.)

Stateful Session Beans Must be activated and passivated to

preserve conversational state of instance

On calls to ejbPassivate(), Bean shouldclose any open resourcesSet all non-transient, non-serializable fields to null

Page 19: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

19

“Interesting” (cont.)

Stateless Session Beans Stateless SBs can only retain information

between method calls via SessionContext and JNDI ENC

Also can have instance variables that won’t be persisted if instance is removed

Stateless SBs don’t ever have their create() method called, so no local object created, only one for the client

Page 20: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

20

“Interesting” (cont.)

Etc. In BMP, use only ejbLoad() and ejbStore() for

synchronizing state with database Do not use ejbActivate(), ejbPassivate(), setEntityContext(), or unsetEntityContext() for this purpose

If a system exception is thrown by a bean method, the ejbRemove() method is not invoked

Constructors should never be defined in an EB class

You should never throw RemoteExceptions from callback methods

Page 21: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

21

Ensuring Constraints in JBoss

Package org.jboss.verifier provides implementation of an EJB checker

Verifier is (optionally) run during the Deployment process

Deployer may decide whether or not deployment should be terminated if an error is found by the verifier in any of the EJBs in a Jar file

Page 22: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

22

Ensuring Constraints in JBoss (2)

strategy.EJBVerifier20 is most relevant class Uses class loader to load bean class Checks for appropriate restrictions based on if it’s

a Session, Entity, or MD Bean Checks subclassing of correct interfaces/classes by

loading “to” class and calling Class.isAssignableFrom()

Checks that method names/arguments match expected

• E.g., between local/remote interfaces and bean Checks for correct return types Checks for correct Exceptions thrown (or not) Checks for no constructor

Page 23: EJB Overview: Constraint Types and Enforcement in JBoss Elissa Newman Fluid Meeting 6/3/04.

23

Future Work

Identify and describe all “interesting” EJB constraints, explicit and implicit, positive and negative

Find in JBoss implementation where these are checked, or what will happen if one of these constraints is violated

Using queries to identify possible constraint violations


Recommended