View
220
Download
1
Tags:
Embed Size (px)
Citation preview
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