22
OpenJMS Presentation March 2000 © Copyright Exolab 2000

OpenJMS Presentation March 2000 © Copyright Exolab 2000

  • View
    220

  • Download
    1

Embed Size (px)

Citation preview

OpenJMS Presentation March

2000

© Copyright Exolab 2000

Overview

Architecture

Design

Build Environment

Release Schedule

Resources

© Copyright Exolab 2000 http://openjms.exolab.org

Contents

© Copyright Exolab 2000 http://openjms.exolab.org

Overview

Open Source Implementation of JMS v1.0.2, Nov.. 1999

Support point-to-point and publish-subscribe models

Support persistent and non-persistent message delivery

Part of the Intalio platform

Architecture completed in February and the development started in March.

© Copyright Exolab 2000 http://openjms.exolab.org

Architecture

JMSClient

JMS Client Library

Object Request Broker

JNDI Client Library

JMS Server Library

JMS Server

JNDI Server Library

JNDI Server

adaptive to facilitate loose coupling and product evolution

can be deployed as a standalone service or embedded into another component

© Copyright Exolab 2000 http://openjms.exolab.org

Architecture (cont.)

Adaptable

Performance

Scalable

Deployment

Architectural Influences

© Copyright Exolab 2000 http://openjms.exolab.org

Architecture (cont.)

Persistence Service ThreadPooling Logging Leasing

MessagingConfigurationSessionDatabase

MonitoringConnectionAdministration

JMS Server Library

Layered architecture has promotes code reuse

Messaging component is responsible for routing messages and managing the difference levels of service.

Configuration component provides an access path to all JMS configuration entities

Session component manages the lifecycle of all consumers and publishers.

Connection component manages all JMS connection.

Administration and Monitoring components

© Copyright Exolab 2000 http://openjms.exolab.org

Architecture (cont.)

ConfigurationSessionDatabase

Connection

Persistence, Service and Logging as discussed previously.

Collection core service is used to manage the JNDI hierarchical namespace.

Configuration component abstracts the actual configuration file format and provides an access path to the configuration items

Session provides transactions and isolation. Single threaded entities

Connection is a server side representation of a client connection to the JNDI server.

Database component abstract the persistence mechanism (JDBC, file-based etc)

Persistence Service LoggingCollection

JNDI Server Library

© Copyright Exolab 2000 http://openjms.exolab.org

Architecture (cont.)

RMI CORBA OTHER

JMS Object Request Broker

ORB specifics are managed through the configuration file <RmiRegistryConfiguration embeddedRegistry = "true" rmiRegistryPort = "1099" />

Each ORB employs different discovery and communication mechanisms

Alpha1 release will only support RMI

Alpha2 release will also include support for our own lightweight ORB.

Further release may support CORBA

© Copyright Exolab 2000 http://openjms.exolab.org

Architecture (cont.)

JDBC OODBMS RecMan

Persistence Adaptor

Persistence mechanism specified in configuration file <PersistenceAdaptor type = "RecMan" name = "jms.db" class="org.exolab.core.database.recman.RecordManager" />

Can plug in different database including JDBC and OODBMS

Client code is independent of the persistence mechanism

Alpha1 release will only support RecMan developed by Cees de Groot http://www.cdegroot.com/

Alpha2 release will support JDBC

© Copyright Exolab 2000 http://openjms.exolab.org

Architecture (cont.)

CastorConfig JavaConifg Other

Configuration Adaptor

Configuration mechanism specified in configuration file

CastorConfig adaptor supports XML-based configuration files generated through the Castor configuration file generator

JavaConfig adaptor to support standard Java property files

Alpha 1 release supports both adaptor types.

© Copyright Exolab 2000 http://openjms.exolab.org

Design

HandleIfc<<Interface>>

JMSMessage

MessageManagerEventListenerIfc<<Interface>>

DestinationEventListenerIfc<<Interface>>

DestinationIfc<<Interface>>

ConsumerIfc<<Interface>>

register

DestinationManager

1..*1..*

ProducerIfc

LeaseManagerEventListenerIfc<<Interface>>

MessageManager

1..*1..*

hands messagesto

LeaseManagerregisters

LeaseIfc

1..*1..*

MessageLeaseMessageHandle

11

1..*1..* 11

register

Message Manager

© Copyright Exolab 2000 http://openjms.exolab.org

Design

Consumer Manager

DestinationEventListenerIfc<<Interface>>

DurableConsumer

DurableConsumerHandle

HandleIfc<<Interface>>

MessageSelectionPolicy

11

PriorityMessageQueue

uses

MessageHandle

1..*1..*

AdministeredObjectIfc<<Interface>>

ConsumerManagerConsumerIfc

<<Interface>>1..*manages 1..*

TransientConsumer

© Copyright Exolab 2000 http://openjms.exolab.org

Design

Destination Manager

MessageManagerEventListenerIfc<<Interface>>

DestinationManager

ConnectionIfc<<Interface>>

TemporaryDestination AdministeredDestination

DestinationHandle

HandleIfc<<Interface>>

MessageSelectionPolicy

11

DestinationIfc<<Interface>>

1..*1..*

PriorityMessageQueue

uses

11

MessageHandle

1..*1..*

creates

© Copyright Exolab 2000 http://openjms.exolab.org

Design

JNDI Server

PersistentCapableIfc<<Interface>>

Remote<<Interface>> InitialContextFactory

Context

RmiJndiContextIfc<<Interface>>

RmiJndiContext uses

RmiJndiServerJndiContext 11 root1..*1..*

RmiJndiContextDelegator

11

delegates

PersistentObject

RmiJndiInitialContextFactory

UnicastRemoteObject

UnicastRemoteObject

RmiJndiInitialContextFactory

JndiServerIfc

© Copyright Exolab 2000 http://openjms.exolab.org

Design

Persistence Framework

ObjectId

ConnectionManager ConnectionIfc0..*

SessionManager

0..*

TransactionCache

LockType

LockStatus

PersistentObject

11

DatabaseManager

DatabaseIfc<<Interface>> 0..*TransactionType TransactionStatus

TransactionManager TransactionIfc

1 1

SessionIfc

0..*0..*

0..*0..*

11

LockManager

Lock0..*

1

1

11

1

11

manages

allocates

allocates

usesmanages

1

refers

0..*

0..*stores

allocates

current

access

© Copyright Exolab 2000 http://openjms.exolab.org

Schedule

Alpha 1 : Feature Release

Point-to-point and publish-and-subscribe messaging domains

Persistent and non-persistent delivery modes

Transacted sessions

Five message objects MapMessage, ObjectMessage, StreamMessage, ByteMessage and TextMessage

Durable destinations and consumers

Embeddable and standalone server configuration

Basic admin client to setup administered objects and to do some primitive monitoring

Synchronous and asynchronous message delivery

© Copyright Exolab 2000 http://openjms.exolab.org

Schedule (cont.)

Alpha 1 : Feature Release

Example client code for using most aspects of the service

Out of the box standalone JMS server

JNDI access to all administered objects

Due end of April

© Copyright Exolab 2000 http://openjms.exolab.org

Schedule (cont.)

Alpha 2 : Performance Release

Lightweight ORB with more efficient use of serialization

Message Selection as specified in JMS 1.0.2

Web based administration

Some form of security

Better administration and monitoring

Due mid to end July

© Copyright Exolab 2000 http://openjms.exolab.org

Schedule (cont.)

Alpha 3 : Scalability Release

Peer to peer communication protocol between JMS servers

Java 2 Security Platform (policy files)

Better stability

Due end of August

© Copyright Exolab 2000 http://openjms.exolab.org

Build Environment

Ant - a Java based build toolpure Java (part of the Apache Jakarta Project)more portable between platformsextensible

JTF - a framework for writing test harnesshierarchical namespace facilitates grouping

Nightly build, smoketest and packagetest harness will flag problems early

© Copyright Exolab 2000 http://openjms.exolab.org

Resources

Web Sitehttp://openjms.exolab.org

Mailing Listopenjms-dev developers’ mailing list

CVScvs -d :pserver:[email protected]:/cvs/openjms logincvs -d :pserver::[email protected]:/cvs/openjms checkout openjms

Q&A

© Copyright Exolab 2000