50
8. Component Software Overview 8.1 Component Frameworks: An Introduction 8.2 Microsoft’s Component Object Model 8.2.1 Component Model 8.2.2 Component Infrastructure 8.2.3 Further Features of the COM Framework 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition of software systems from concrete software components. Software components are well-defined entities of their own that can be provided by other development groups i or companies. In particular, component technology is important to create a market for prefabricated software. 06.07.2007 248 © A. Poetzsch-Heffter, TU Kaiserslautern

8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

8. Component Software

Overview

8.1 Component Frameworks: An Introduction

8.2 Microsoft’s Component Object Model8.2.1 Component Model8.2.2 Component Infrastructure8.2.3 Further Features of the COM Framework

8.3 Enterprise JavaBeans8.3.1 Component Model8.3.2 Component Infrastructure

Component frameworks support the composition of software systems from concrete software components.

Software components are well-defined entities of their own that can be provided by other development groups

ior companies.

In particular, component technology is important to create a market for prefabricated software.

06.07.2007 248© A. Poetzsch-Heffter, TU Kaiserslautern

Page 2: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

Component frameworks have three main goals:• Reuse of software components• Providing the basis for a market of software

components• Role separation• Role separation

Component frameworks enable to separate theresponsibility of developing and managing a software system into five roles:• component provider,• framework provider,

li ti id• application provider (constructs an application from components),

• application deployer (installs an application on a platform),p )

• system administrator.

Role separation is important for division of labor,i li ti d b tt titi i th ftspecialization, and better competition in the software

market.

06.07.2007 249© A. Poetzsch-Heffter, TU Kaiserslautern

Page 3: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

8.1 Component Frameworks:An Introduction

The “compound object pattern” provides the conceptual basis for component frameworksconceptual basis for component frameworks.

In this context, the term components refers to software components consisting of concrete p g“program parts and data”.

Components are the units of composition in the context of a component framework.

The goal of component frameworks is the blackboxreuse Inspection of the component’s implementationreuse. Inspection of the component s implementation by the user should be unnecessary.

06.07.2007 250© A. Poetzsch-Heffter, TU Kaiserslautern

Page 4: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

Composition Techniques

A component framework provides the mechanismsto stick components together.

We can distinguish three kinds of compositionmechanisms:

• Static linking of components, i.e. the components are linked together before they are executed.

• Dynamic linking of components, i.e. somecomponents are linked at runtime into an executing process.

• Connecting of components that run as parts ofdifferent processes.

06.07.2007 251© A. Poetzsch-Heffter, TU Kaiserslautern

Page 5: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

Component Frameworks

Th l f ”C t S ft B d bj tThe glossary of ”Component Software: Beyond object-Oriented Programming” by Clemens Szyperski givesan explanation of the term “component framework”:

“A component framework is a collection of rules andinterfaces (contracts) that govern the interaction ofcomponents plugged into the framework. A componentframework typically enforces some of the more vitalframework typically enforces some of the more vitalrules of interaction by encapsulating the requiredinteraction mechanisms.”

A th l l i t ft tAs the general goal is to compose software systemsfrom prefabricated components, a componentframework has to give answers to the following threequestions:

• Component model: What is a component?• Component infrastructure: What are the infra-

structure and the technical support for deployingstructure and the technical support for deploying and composing components?

• Further features: How are further requirements supported by the component framework?

06.07.2007 252© A. Poetzsch-Heffter, TU Kaiserslautern

Page 6: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

The component model essentially consists ofrules specifying• what kinds of components are supported,• what constitutes a component,• and what the properties of components are.

Many of the rules are usually syntactic.But, there may be as well semantic rules.

Components are described with the help of someComponents are described with the help of some

languages (e.g. programming or assembly languages).

The component infrastructureThe component infrastructure• explains how components are composed and

deployed• describes the rules

o how a component finds other components by name,

o how components are linked to each other,o and how they can communicate

• specifies interfaces that allow to inspect components at runtime

• may provide mechanisms to startup and initialize remote components

06.07.2007 253© A. Poetzsch-Heffter, TU Kaiserslautern

remote components

Page 7: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

• may comprise library code that components need to connect to other components

• may define standardized platform components for• may define standardized platform components for composed systems

• may specify tools for composition and deployment

Component frameworks often support further features,like:• support for persistence,• security mechanisms• security mechanisms.

Different Kinds of FrameworksDifferent Kinds of Frameworks

• Component frameworks can be independent ofrequirements of specific application domains.Th t l hit t l tt (• They can support general architectural patterns (e.g.the EJB framework primarily supports the constructionof software systems according to the three-tierarchitectural pattern).

• They can be developed for more specific applicationareas. In that case, the component model and infrastructure are specialized to that area. Often predefined components are provided

06.07.2007 254© A. Poetzsch-Heffter, TU Kaiserslautern

Often predefined components are provided.

Page 8: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

The RMI (remote method invocation) in Java is a

Discussion of „Frameworks“:

The RMI (remote method invocation) in Java is acommunication infrastructure.• It provides library classes, interfaces, and services

to connect to remote objects and invoke theirto connect to remote objects and invoke their methods.

• It can be used to build up a componentinfrastructure, but it is not a component framework

• A component model is missing.

The AWT is a typical program frameworkThe AWT is a typical program framework.The subclasses of class Component can beconsidered as components.A component infrastructure providing rules and p p gtechniques for composition and deployment ismissing.

Improvement: the JavaBeans framework building onImprovement: the JavaBeans framework building onAWT, which• defines rules and conventions that specify

component interfaces,• provides an event based composition mechanism

06.07.2007 255© A. Poetzsch-Heffter, TU Kaiserslautern

• provides an event-based composition mechanism.

Page 9: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

8.2 Microsoft’s Component ObjectModel (COM)( )

The Component Object Model (COM) is the name ofMicrosoft’s basic component framework.• COM is directly used in many areas• COM is directly used in many areas.• It provides the foundation for more specialized

frameworks like e.g. Microsoft’s compound document standard OLE.COM i il bl Wi d d th ti• COM is available on Windows and other operating systems (e.g. Mac OS, some UNIX operating systems).

In the following, we will not distinguish between COMand Distributed COM (DCOM), an extension to COMthat allows network-based component interaction.

COM is a framework to compose software systemson a binary level.In particular, components written in differentprogramming languages can interoperateprogramming languages can interoperate.

To make this work, the interfaces of components canbe described by an interface description language

ll d IDL

06.07.2007 256© A. Poetzsch-Heffter, TU Kaiserslautern

called IDL.

Page 10: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

8.2.1 Component Model

COM distinguishes between• COM class: the software that implements a

component• COM object: the instance of a component classCOM object: the instance of a component class

A COM class• can be implemented as a class written in an

object-oriented language,• can consist of many classes or some procedural

code,• provides the implementation for its instances andprovides the implementation for its instances and

supports their creation.

A COM objecti t il bj t i th f• is not necessarily a pure object in the sense of anOO-language, i.e. an object with a fixed number ofinstance variables and methods,

• can be realized by many pure objects of different y y jtypes or by other data structures.

• may have state, provides a mechanism to becompared for identity, and is only accessible over

ll d fi d i t f

06.07.2007 257© A. Poetzsch-Heffter, TU Kaiserslautern

well-defined interfaces.

Page 11: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

Like in Java, an interface has a name and describesth i t f th d / th d id d bthe signature of the procedures/methods provided by(pure) objects implementing the interface.

Example: (COM component model):Example: (COM component model):Let us consider a COM class that provides the

Interfaces IOnlyA, IAlsoBC, and IService:

interface IOnlyA extends IUnknown {int doOpA( ... );

}

interface IAlsoBC extends IOnlyA {int doOpB( ... );int doOpC( ... );

}

interface IService extends IUnknown {interface IService extends IUnknown {int doOpD( ... );

}

06.07.2007 258© A. Poetzsch-Heffter, TU Kaiserslautern

Page 12: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

lImpl

lOther

Foo

object

obj5: Cl

obj6: Cl

obj7: Cl

COM o

A A ABC

AD

obj1: ClA

obj2: ClA

obj3: ClA

obj4: ClA

type

type

h va

riabl

e of

IOnlyA

varia

bles

of

IOnlyA

IOnlyA

IService

nt 1

nt 2

06.07.2007 259© A. Poetzsch-Heffter, TU Kaiserslautern

with

with

Clie

Clie

n

Page 13: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

A COM object is a collection of pure objects.The pure objects that can be referenced from theThe pure objects that can be referenced from theoutside are called the interface objects of the COMobject.

class ClA extends ClUnknown implements IOnlyA {

int doOpA( ... ) { ... }}}

class ClABC extends ClUnknownimplements IAlsoBC {p {

int doOpA( ... ) { ... }int doOpB( ... ) { ... }int doOpC( ... ) { ... }

}

class ClAD extends ClA implements IOnlyA IService {implements IOnlyA, IService {

char doOpD( ... ) { ... }}

06.07.2007 260© A. Poetzsch-Heffter, TU Kaiserslautern

Page 14: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

This example shows that• one interface object can be referenced by several

clientsclients,• an interface object can be used to provide the

functionality of an interface containing only a subset of the methods

• the same interface can be provided by several• the same interface can be provided by several interface objects,

• a COM object comprises internal objects to implement the functionality of the interface objects.

The explanations above sketch the conceptualcomponent model of COM.Technically, to be a binary standard, COM defines astandard binary layout to realize the conceptual model.

In this binary layout, the interface objects areimplemented by records that are called interface p ynodes.

The first entry of these records contains a pointer to arecord of function pointers referring to the interfacerecord of function pointers referring to the interfaceoperations.

Whereas Java only allows input parameters, COMt t t t ll

06.07.2007 261© A. Poetzsch-Heffter, TU Kaiserslautern

supports output parameters as well.

Page 15: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

8.2.2 Component Infrastructure

I l th t i f t t d ib thIn general, the component infrastructure describes therules and techniques for deploying and composingcomponents.Here, we focus on the mechanisms that COM providesfor composition, i.e. for linking or connectingcomponents.The basic situation is that a client looks for a servicecharacterized by an interface IFcharacterized by an interface IF.There are two alternatives:

1. The client already has a reference to a COM object that provides IFthat provides IF.

2. The client knows a COM class the objects of whichprovide IF.

Querying COM Objects for Interfaces:

Assumption: A client has a reference to COM object X.S f fScope: Use this reference to query for otherinterfaces that X provides.Solution: COM supports a naming mechanism forinterfaces based on globally unique identifiers (IIDs)

06.07.2007 262© A. Poetzsch-Heffter, TU Kaiserslautern

interfaces based on globally unique identifiers (IIDs).

Page 16: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

All COM objects have to implement the predefinedinterface IUnknown, defined as:

interface IUnknown {HRESULT QueryInterface(

IID iid out IUnknown qif );IID iid, out IUnknown qif );long AddRef();long Release();

}

The client can use its reference to X to call methodQueryInterface. It:• takes an IID as input and checks whether X

implements that interface,• returns a result of type HRESULT indicating

whether the check was successful, and if not, whyit failed,

• uses the output parameter qif to return the reference to an interface object A that implementsreference to an interface object A that implements the queried interface.

As all COM objects must implement the IUnknowninterface, the identity of the corresponding interfacebj t b d t id tif th ti COM bj t

06.07.2007 263© A. Poetzsch-Heffter, TU Kaiserslautern

object can be used to identify the entire COM object.

Page 17: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

Creating COM Objects:

W l i th h i t t COM bj t dWe explain the mechanism to create COM objects andto get a reference to one of its interface objects.This mechanism is based on three different features ofthe COM framework:• Support for unambiguous identifiers of COM

classes (CLSIDs).• The COM library that is linked to the client code

(procedure CoCreateInstance is called to create a (COM object).

• A system registry to find COM classes.

Similar to pure OO-programming, the creation of COMp p g g,objects is done by COM classes. To identify COMclasses, the COM framework provides the notion ofclass identifiers (CLSIDs).The usual way to create a COM object is to call theThe usual way to create a COM object is to call theCOM library procedure CoCreateInstance.

The procedure CoCreateInstance• takes a CLSID and an IID as arguments,• tries to create an instance of the COM class CLSID,• returns a reference to an interface object of the

created COM object that implements the requested

06.07.2007 264© A. Poetzsch-Heffter, TU Kaiserslautern

j p qinterface IID.

Page 18: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

A COM server• comprises the implementation of one or more COM• comprises the implementation of one or more COM

classes,• contains a so-called class factory for each

implemented COM class.

The class factory is a COM object that implements thecreation of instances of the associated COM class. Forthis purpose, the class factories provide the interfaceIClassFactory.

From the view point of a client, there are three differentkinds of servers.• An in-process server runs in the same process as

the client.• A local server runs on the same machine as the

client, but in a different process.• A remote server runs on a different machine as the

client.

The creation of a COM object involves several steps.j pThe client calls the procedure CoCreateInstance with• class identifier CLSID• interface identifier IID• optional parameters indicating the preferred kind of

06.07.2007 265© A. Poetzsch-Heffter, TU Kaiserslautern

• optional parameters indicating the preferred kind of server.

Page 19: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

The system registry is consulted to locate a serverimplementing CLSIDimplementing CLSID.This results in one of the following cases:• There is no appropriate server registered for class

CID.

• There is an appropriate server registered, but this server is not running. In that case

o the server is started or dynamically linked to theo the server is started or dynamically linked to theclient process,

o the class factories are created,o references to IClassFactory are entered into the

system registry.o the process continues as in the following case.

• There is an appropriate server registered that is• There is an appropriate server registered that is running.

o CoCreateInstance uses the reference to interface IClassFactory stored in the registry to create a corresponding COM objectcorresponding COM object.

o It queries the COM objects for the interface IID.

06.07.2007 266© A. Poetzsch-Heffter, TU Kaiserslautern

Page 20: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

In case of local and remote servers, additional supporthas to be provided by the COM framework forhas to be provided by the COM framework fortransparent communication across process boundariesor across machine boundaries.

For this purpose, COM uses techniques similar to those of the remote method invocation mechanism ofJava or CORBA.

8.2.3 Further Features of the COMFrame orkFramework

The COM framework provides a number of furtherfeatures that simplify the composition of systems fromfeatures that simplify the composition of systems fromcomponents.

Examples are:S t f b ll ti• Support for garbage collection

• Support for object reuse • Techniques to specify families of interfaces

S f

06.07.2007 267© A. Poetzsch-Heffter, TU Kaiserslautern

• Support for persistence

Page 21: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

Cooperative garbage collection by reference counting:• Based on the methods AddRef and Release of

IUnknownIUnknown.• Before the first reference to an interface object is

handed out to a client, the count is set to one.• It is automatically incremented when another y

reference to that interface object is passed out.• If a client stores an interface reference to an

additional variable or if it passes the reference to some other client the client calls AddRef tosome other client, the client calls AddRef to increment the reference count.

• The method Release is called when a reference is released. When reaching zero, the interface object is deallocatedis deallocated.

Object reuse can be achieved by composition of COMObject reuse can be achieved by composition of COMobjects. Essentially there are two different techniques:

• Containment: A COM object X can encapsulate

another COM object Yanother COM object Y .o The interface objects of Y become internal

objects of X.o Method calls to the interface objects of X can be

06.07.2007 268© A. Poetzsch-Heffter, TU Kaiserslautern

forwarded to these internal objects.

Page 22: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

• Aggregation: Several COM objects Y1, .., Yn are d t f COM bj t Xcomposed to form a new COM object X

o the interface objects of the Yi become the interface objects of X.

o Only the implementation of IUnknown of X has y pto be newly designed to reflect all the interfaces that are provided by Y1, .., Yn.

Further reading: Chapter 14 of Clemens SzyperskiFurther reading: Chapter 14 of Clemens Szyperski.Component Software: Beyond Object-OrientedProgramming. Addison-Wesley, 1997.

8.3 Enterprise JavaBeans

The Enterprise JavaBeans framework is a componentframework developed by Sun Microsystems.It supports the realization of application servers

di t th th ti hit t l ttaccording to the three tier architectural pattern.

06.07.2007 269© A. Poetzsch-Heffter, TU Kaiserslautern

Page 23: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

Explanation: (Application server)

An application server is a software system thatprovides services for (remote) clients.The persistent data involved in such services is usuallymanaged by databasesmanaged by databases.

The tasks of an application sever are:• Accepting and maintaining the connection to clients

(authorization and security mechanisms, control over the client sessions).

• Reading and writing data from and to the database.• Transaction mechanisms• Transaction mechanisms.• The core functionality of the supported services.

In the following, we describe• the component model, i.e. what beans are and how

they are described, andf• the infrastructure to deploy and work with beans.

Further reading:Enterprise JavaBeans Specification

06.07.2007 270© A. Poetzsch-Heffter, TU Kaiserslautern

Enterprise JavaBeans Specification

Page 24: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

This is the not yet finishedslide about EJB Server

(see lecture).

06.07.2007 271© A. Poetzsch-Heffter, TU Kaiserslautern

Page 25: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

8.3.1 Component ModelThe Enterprise JavaBeans are the components from which a so-called application assembler constructs a server-side application.The resulting application is deployed in an EJBcontainer After deployment it is available to clientscontainer. After deployment, it is available to clients.The application and thus the beans can use themechanisms of the underlying container like:• transaction mechanisms,• control for persistence,• security services,• etc.

Bean Species and Parts

The beans are the units of composition in theEJB framework i e the components We speak ofEJB framework, i.e. the components. We speak of• bean instances: These are the runtime objects. A beaninstance might consist of more than one pure object.

• bean components: This is the software implementingbean components: This is the software implementingtheir functionality. A bean component comprises morethan one pure class.

• There are two different kinds of beans: Entity beans

06.07.2007 272© A. Poetzsch-Heffter, TU Kaiserslautern

and session beans.

Page 26: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

Entity beans essentially represent the data objectshandled by the system (e.g. bank accounts, products,assurance policies, orders, or employees).

An entity bean instance usually corresponds to what iscalled an entity in the literature about entity-

l i hi d li d d brelationship modeling and data base systems.

Entity bean instances are usually persistent.The programmer of the bean can choose between • bean-managed persistence: persistence

mechanisms implemented by programmer;• container-managed persistence: persistence is

d t ti ll b th t imanaged automatically by the container.

An entity bean instance can be accessed by differentclients communicating with the application sever.The instance is logically identified by a so calledThe instance is logically identified by a so-called primary key.

Session beans are used to model tasks, processes, or, p ,behavior of the application server.A session bean corresponds to a service for a client.

A session bean instance is a private ressource of a

06.07.2007 273© A. Poetzsch-Heffter, TU Kaiserslautern

client.

Page 27: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

The framework distinguishes between• stateless session beans and

• stateful session beans, which have a state that ismaintained between method invocations. The state is not persistent.

A bean component consists of four or five parts:• the remote interface,• the home interface,• the primary key class (only for entity beans),• the bean class, and

th d l t d i t• the deployment descriptor.

We will explain these parts in turn by a simpleexample of an entity bean representing a banke a p e o a e t ty bea ep ese t g a baaccount.

The Remote InterfaceThe remote interface defines the methods that theentity bean provides to the client.It reflects the functionality of the bean.

06.07.2007 274© A. Poetzsch-Heffter, TU Kaiserslautern

Page 28: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

The bank account bean of our example allows one• to ask for the number of the account,• to query for the balance,• and to change the balance by a positive or

negative amountnegative amount.

public interface BankAccount extends EJBObject {

String getAccountNumber()throws RemoteException;

float getBalance() throws RemoteException;

void changeBalance(float amount) throws RemoteException;

}

EJBObject is a supertype of all bean instances.In order to support remote method invocation, it is asubtype of type Remote.yp yp

06.07.2007 275© A. Poetzsch-Heffter, TU Kaiserslautern

Page 29: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

The Home Interface and Primary Key Class

Th h i t f d fi th th d iThe home interface defines the methods concerningthe lifecycle of the bean.

The client uses this interfacee c e t uses t s te ace• to create bean instances,• to find them,• and to remove them.

In our example, the home interface definestwo methods to create and find an account:

public interface BankAccountHome extends EJBHome {

BankAccount create(String accNo, float initBal)

throws CreateException, RemoteException;

B kA t fi dB P i K (BankAccount findByPrimaryKey(BankAccountPK accPK)

throws FinderException, RemoteException;

06.07.2007 276© A. Poetzsch-Heffter, TU Kaiserslautern

}

Page 30: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

Home interfaces have to extend interface EJBHomewhich contains a method to delete a bean and, as asubtype of Remote, the functionality for remote methodi tiinvocation.

The method findByPrimaryKey plays a special role inthe EJB framework. It has to take a primary key asparameter Its ret rn t pe has to be the t pe of theparameter. Its return type has to be the type of thecorresponding remote interface.

Here, we use the account number as primary key:

public class BankAccountPK implements java.io.Serializable {

bli St i tN bpublic String accountNumber;

public BankAccountPK(String accNo){ accountNumber = accNo; }

public BankAccountPK() {public BankAccountPK() { accountNumber = new String(); }

public int hashCode() {return accountNumber.hashCode(); }

public boolean equals(Object obj) {return accountNumber.equals(obj); }

public String toString() { t tN b }

06.07.2007 277© A. Poetzsch-Heffter, TU Kaiserslautern

return accountNumber; }}

Page 31: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

The Bean Class

The bean class provides implementations for theThe bean class provides implementations for themethods of the home and remote interface. The onlyexception is the method findByPrimaryKey which isprovided in the deployment process.

The bean class must not be a subtype of the home and remote interfaces, i.e. it does not “implement”the interfaces in the sense of Java.

It has to provide implementations for their methods.The connection between the bean class and theinterfaces will be established during deployment.

public class BankAccountBean implements EntityBean {

public String accountNumber;public float accountBalance;p ;private EntityContext theContext;

// continued on following slides

06.07.2007 278© A. Poetzsch-Heffter, TU Kaiserslautern

Page 32: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

// corresponds to create method of // home interface: ejb+create

public BankAccountPK ejbCreate(public BankAccountPK ejbCreate(String accNo, float initBal)

throws CreateException, RemoteException {

accountNumber = accNo;accountBalance = initBal;return null;

}

// methods implementing the remote// interface

public String getAccountNumber()public String getAccountNumber()throws RemoteException {

return accountNumber;}

bli fl t tB l ()public float getBalance() throws RemoteException {

return accountBalance;}public void changeBalance(

float amount) throws RemoteException {

accountBalance += amount;

06.07.2007 279© A. Poetzsch-Heffter, TU Kaiserslautern

accountBalance + amount;}

Page 33: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

// the methods of interface // javax.ejb.EntityBean

public void setEntityContext(EntityContext ctx)

throws RemoteException {theContext = ctx;theContext ctx;

}public void unsetEntityContext()

throws RemoteException {theContext = null;

}

public void ejbRemove()public void ejbRemove() throws RemoteException,

RemoveException {}public void ejbActivate()p j

throws RemoteException {}public void ejbPassivate()

throws RemoteException {}public void ejbLoad()

throws RemoteException {}public void ejbStore()

throws RemoteException {}

06.07.2007 280© A. Poetzsch-Heffter, TU Kaiserslautern

throws RemoteException {}}

Page 34: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

Bean classes have to implement the interfaceEntityBean of the EJB framework.Th th d f thi i t f thThe methods of this interface manage thecommunication between the bean and the container.

For example the method setEntityContext allows thecontainer to store so-called context information into thebean. This context information is used by the containerto manage the identity of bean instances.

The Deployment DescriptorThe deployment descriptor

d ib th diff t t f b d th• describes the different parts of a bean and the runtime properties like e.g. whether persistence iscontainer- or bean-managed,

• allows to combine several beans into one unit,

• describes external dependency (e.g. to databasesor external beans),

• provides deployment information (e.g. access rights

• specifying who has the permission to invoke a method).

• Deployment descriptors are defined in an XML f t

06.07.2007 281© A. Poetzsch-Heffter, TU Kaiserslautern

format.

Page 35: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

Here is a very practical example where a componentframework uses a description language with formalframework uses a description language with formalsyntax to capture architectural relations andproperties.

The descriptions are later used to deploy the softwareThe descriptions are later used to deploy the softwaresystems in a semi-automatic way.

<?xml version="1.0" ?>! j j<!DOCTYPE ejb-jar PUBLIC

"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.2//EN"

"http://java.sun.com/j2eedtds/ejb-jar_1_2.dtd>"

<ejb-jar><description>deployment descriptor of entity bean

BankAccount</description>

(continued on next three slides)

06.07.2007 282© A. Poetzsch-Heffter, TU Kaiserslautern

Page 36: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

me>

te>

n

Home</hom

nt</remot

countBean

ence -->

ce-type>

ccountPK

account.

> e>

kAccountH

> ankAccoun

s.BankAcc

persiste

ersistenc

counts.Ac

a bank a

JNDI -->

/ejb-name

ace -->

unts.Bank

rface -->

counts.Ba

-->

.accounts

-managed

ainer</pe

y -->

mples.acc

s>

presents

bean in

Account</

e interfa

les.accou

ote inter

mples.acc

n class -

.samples.

ontainer-

ype>Conta

imary key

s>ejb.sam

ss>

ise-beans

y>

iption>

count rep

ription>

e of the

ame>BankA

e of home

ejb.sampl

e of remo

e>ejb.sam

e of bean

lass>ejb.

class>

n uses co

stence-ty

ss of pri

key-class

-key-clas

<enterpri

<entity

<descri

BankAcc

</descr

<!--name

<ejb-na

<!--name

<home>e

<!--name

<remote

<!--name

<ejb-cl

</ejb-c

<!--bean

<persis

<!--clas

<prim-k

</prim-

06.07.2007 283© A. Poetzsch-Heffter, TU Kaiserslautern

< < < < < < <

Page 37: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

tion>

ld>

t -->

/descript

key -->

m-key-fie

persisten

d-name>

ld-name>

mployees<

nding to

ber</prim

-->

nt>

ould be p

er</field

nce</fiel

f bank em

-name>

correspon

countNumb

entrant -

/reentran

that sho

ountNumbe

ountBalan

r>

e role of

er</role-

in bean c

field>acc

s not ree

t>False</

of bean

d>

name>acco

ld>

d>

name>acco

ld>

e-beans>

escriptor

-role>

ption>The

ame>banke

y-role>

-field i

primkey-f

-bean is

reentrant

-fields

cmp-field

<field-n

/cmp-fiel

cmp-field

<field-n

/cmp-fiel

/entity>

nterprise

sembly-de

security-

<descrip

<role-na

/security

06.07.2007 284© A. Poetzsch-Heffter, TU Kaiserslautern

<!--

<p

<!--

<r

<!--

<c

</

<c

</

</

</en

<ass

<s

</

Page 38: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

-->

n -->

-->

eBalance

ansaction

me>

ute>

methods -

me>

od change

rt of tra

me>

ethod-nam

s-attribu

oke all m

-name>

</ejb-nam

d-name>

of metho

ed as par

</ejb-nam

lance</me

ed</trans

may invo

n>

ker</role-

kAccount<

*</method

on>

behavior

ction>

ly invoke

kAccount<

changeBal

e>Require

action>

or>

employees

permissio

name>bank

d>

-name>Ban

hod-name>

od>

-permissi

actional

er-transa

hod is on

d>

-name>Ban

hod-name>

od>

-attribut

ner-trans

-descript

--Bank e

<method-p

<role-n

<method

<ejb-

<meth

</metho

</method-

--transa

<containe

<!--

meth

<method

<ejb-

<meth

</metho

<trans-

</contain

assembly-

ejb-jar>

06.07.2007 285© A. Poetzsch-Heffter, TU Kaiserslautern

<!- < <

<!- < < <

</a

</e

Page 39: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

Further Aspects

In summary, the component model of theEJB framework is based on• Java interfaces and classesJava interfaces and classes• and an XML document describing the relationship

and properties of the parts.

I.e. it is a programming language dependent model.

The EJB specification contains a fairly large numberof conventions and rules whichof conventions and rules which• make it possible that the parts can work together

seamlessly,• allow for the communication with the underlying

container,• make the beans to a large extent independent of

the special implementation of the container.

06.07.2007 286© A. Poetzsch-Heffter, TU Kaiserslautern

Page 40: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

In the following we provide some more rules:In the following, we provide some more rules:• A bean must not return the implicit parameter “this”

as result of a method or pass it as a parameter.• Static variables are forbidden in bean classes.• Use of threads and synchronization mechanisms is

not allowed.• Use of GUI facilities as well as input- and

output-operations are forbidden.output operations are forbidden.• Use of introspection and reflection must be avoided.• Beans should not influence class loading and

security management.

The basic reason underlying these restrictions is tocreate a well-defined interface between thecomponents and the containercomponents and the container.

This interface has to take behavioral and securityaspects into account. E.g.• deadlocks have to be avoided,• the access rights of beans have to be restricted so

that they cannot manipulate the data of other beans.

06.07.2007 287© A. Poetzsch-Heffter, TU Kaiserslautern

Page 41: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

8.3.2 Component InfrastructureTh b kb f th EJB t i f t t iThe backbone of the EJB component infrastructure isthe EJB container.A bean instance can only exist within a container.The container is the runtime environment for beaninstances and provides the “necessary services”, inparticular:• a naming service,• a transaction monitor,a transaction monitor,• access to a database,• and Java Mail service

M i BManaging BeansThe major task of the EJB container is to control thelifecycle of bean instances.It creates and removes instancesIt creates and removes instances.In addition, it is responsible for an efficientmanagement of bean instances:• Many containers provide mechanisms to passivate

and reactivate instances by temporarily storingand reactivate instances by temporarily storing them on disk.

• Pooling of instances allows to reuse an instance thereby avoiding removing an instance and afterwards creating an equal instance again

06.07.2007 288© A. Poetzsch-Heffter, TU Kaiserslautern

afterwards creating an equal instance again.

Page 42: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

• Support for load balancing between differentcontainers: If one container is very busy, use another less frequented containeranother less frequented container.

• Mechanism to access beans by name. Containers use the Java Naming and Directory Interface which is an extension to the naming mechanism

d l i RMIunderlying RMI.

Persistence, Transactions, Security

EJB containers have to support a mechanism that iscalled container-managed persistence.An entity bean with container-managed persistencerelies on the container to perform persistent dataaccess on behalf of the bean instances. The containerhas to

• transfer the data between the bean instance and the underlying database,

• implement the creation, removal, and lookup of the entity object in database,

• manage the mapping between primary key and EJBObject.

06.07.2007 289© A. Poetzsch-Heffter, TU Kaiserslautern

Page 43: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

Transactions ensure data consistency, taking intoaccount failure recovery and multi-user programming.

The EJB framework supports distributed transactions:An application can automatically update data inAn application can automatically update data inmultiple databases which may be distributed acrossmultiple sites.

In case of container-managed transactiondemarcation, the container demarcates transactionsaccording to instructions provided by the applicationassembler in the deployment descriptorassembler in the deployment descriptor.

These instructions describe e.g. whether the containershould run a method• in a client’s transaction,• in no transaction,• or in a new transaction that the container has to

t tstart.

In order to support such mechanisms, the EJBframework comprises a transaction model.

06.07.2007 290© A. Poetzsch-Heffter, TU Kaiserslautern

framework comprises a transaction model.

Page 44: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

The EJB framework provides several mechanisms tosecure the applications assembled from the beans.The container provides the implementation of aThe container provides the implementation of asecurity infrastructure that can be controlled by so-called security policies.

It is important to have a clear separation betweenIt is important to have a clear separation between• application code, i.e. beans,• and security code, i.e. the security infrastructure of

the container and the security policies.

These parts are connected only at deployment time.

Deployment of Beansp y

We consider the question of how beans are deployedin containers.The container developers have to provide tools for theThe container developers have to provide tools for thedeployment of beans.

For each bean X, the tools take the bean sources asinput and generate two classes:• a class XHome implementing the home interface

(EJB home objects)• and a class XObject implementing the remote

06.07.2007 291© A. Poetzsch-Heffter, TU Kaiserslautern

j p ginterface (EJB remote objects).

Page 45: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

or

ce nts

Descripto

Interfac

ctimplemen

loyment D

Remote

EJB Objec

iner-

ls

lass

Depl E

rates

Contai

Too

Bean C

ss

gener

face

Key Clas

EJB Home

me Interf

Primary E

ements

06.07.2007 292© A. Poetzsch-Heffter, TU Kaiserslautern

Ho

impl

Page 46: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

The EJB home and remote objects

• encapsulate the bean instance:o A client can only access a bean by

invoking methods of the home and remote objects.invoking methods of the home and remote objects.o These objects delegate the client’s method

invocations to the bean instance.

• perform operations realizing important tasks of the• perform operations realizing important tasks of the container:

o ressource management,o security mechanisms,

t ti h dlio transactions handling,o persistence management.

06.07.2007 293© A. Poetzsch-Heffter, TU Kaiserslautern

Page 47: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

Client

RMI

EJB Home Object EJB Remote Object

Home Interface Remote Interface

EJB Home Object EJB Remote Object

delegated invocations

Bean Instance

EJB ContainerEJB Container

Server

06.07.2007 294© A. Poetzsch-Heffter, TU Kaiserslautern

Page 48: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

It is important that the EJB framework supports such adelegation and encapsulation technique:• This way, the container has control over bean

instances and can prevent incorrect or maliciousaccess to beansaccess to beans.

• It is the basis to relate the component infrastructure tothe components.

• It frees the bean developers to a large extent fromtaking infrastructure issues into account.

A bean instance is always accessed through its homed t bj t Thi l h ld f thand remote object. This also holds for the

communication among beans.

Using BeansUsing Beans

To illustrate the usage of beans let us consider theexample of the bank account.pA client wishes to access an instance of theBankAccount-bean.He has to know the name by which the bean is made

06.07.2007 295© A. Poetzsch-Heffter, TU Kaiserslautern

accessible in the container.

Page 49: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

Usually, this is the name of the bean as given in thedeployment descriptor In our example the name wasdeployment descriptor. In our example, the name was“BankAccount”, and we assume that the bean isaccessible under the name“java:comp/env/ejb/BankAccount”.j p j

The following fragment shows the essential steps toaccess and use a bean:

String BANK_ACCOUNT = "java:comp/env/ejb/BankAccount";

InitialContext ctx = new InitialContext();InitialContext ctx new InitialContext();Object o = ctx.lookup(BANK_ACCOUNT);BankAccountHome bh = (BankAccountHome)

PortableRemoteObject.narrow(o,BankAccountHome.class);

BankAccount ba = bh.create("2345735",0.0);ba.changeBalance(32.00);

06.07.2007 296© A. Poetzsch-Heffter, TU Kaiserslautern

Page 50: 8. Component Software - TU Kaiserslautern · 2020. 7. 2. · 8.3 Enterprise JavaBeans 8.3.1 Component Model 8.3.2 Component Infrastructure Component frameworks support the composition

The creation of a new empty bank account leads tofthe creation of

• a bank account instance,• an entity in the underlying database,• a primary key object associated with the beana primary key object, associated with the bean

instance.

In summary, we can see that the use of beans is verysimilar to the use of remote objects. The managementof beans by the container is hidden to the client.

06.07.2007 297© A. Poetzsch-Heffter, TU Kaiserslautern