Download presentation
Presentation is loading. Please wait.
Published byHillary Phelps Modified over 9 years ago
1
OpenJMS An Open Source Implementation of the JMS Specification Jim Alateras Intalio Inc.
2
2 Contents JMS Specification History of OpenJMS Existing Architecture Work In Progress Deployment Development Environment Current Release Future Direction Q & A
3
3 JMS Specifications Two Messaging Models - Queues and Topics Persistent and Non-Persistent Message Delivery Five Message Types - Text, Byte, Object, Map and Stream Synchronous and Asynchronous message consumption Selectors, priority, QueueBrowser Local and distributed transactions
4
4 JMS Specifications - Queues Sender publishers to the Queue and Receiver consumers Supports multiple senders/receivers per queue Message Ordering Undefined Delivery semantics for > 1receiver Persistent messages delivered exactly once Non-persistent messages delivered at most once
5
5 JMS Specifications - Topics Publisher publishes and Subscribers consumes Multiple publishers/subscribers per topic Subscriber each receives own copy of messages Priority effects message delivery order Persistent and non-persistent delivery semantics
6
6 JMS Providers JMS Providers distribute JMS compliant components/products 21 vendors have a JMS offering Four Open Source offerings including OpenJMS, ObjectCube, Joram and spyderMQ A number of commercial products including MQSeries, FioranoMQ and SonicMQ No compliance test suite available to compare the various offerings No industry benchmarks to compare performance
7
7 History of OpenJMS Sponsored by the Exolab Group (OpenOrb, OpenEJB) Started in Feb-2000 V0.1 released in May-2000 (pub-sub, p2p, non-persistent, rmi) V0.2 released in Jun-2000 (jdbc-based persistence, gui, application, testharness) V0.3 released in Aug-2000 (tcp, temporary destinations, database caching, selectors) V0.4 released in Oct-2000 (bug fixes, initial queue browser, more client test coverage) V0.5 released in Dec-2000 (wild card sub, queue browser and flow control) 3 core developers based in Melbourne
8
8 OpenJMS Architecture Service based adaptive architecture Initial focus was on time-to-market and features (RMI and JDBM) Failed to initially architect for availability and scalability Second iteration is focusing on failover, clustering and load balancing In the end the architecture was quite tolerable to change. Subsequently released more widely used adaptors (TCP, JDBC)
9
9 Server Internals
10
10 OpenJMS Configuration XML based configuration file generated from Castor tool Server configuration Administered Destinations Participants and Authentication Persistent adaptors <attribute name="clusterName" type="string" minOccurs="0" maxOccurs="1" /> <attribute name="jmsAdminServerName" type="string" maxOccurs="1"/> </element <PersistenceAdapterConfiguration minConsumerListSize="10000" minMessageListSize="40000" persistentType="RDBMS" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:oci8:@test" userName="jim" password="ab1234" retries="5" timeout ="2000" />
11
11 JNDI Integration Client uses JNDI to lookup factories and destinations Run an embedded JNDI provider Connect to an external JNDI provider Automatic object registration at start-up
12
12 Administration GUI Initial Administration GUI deployed with v0.2 New Administration GUI available in v0.6 Create administered destinations Start and stop the server Purge persistent messages for a destination Register durable subscribers
13
13 Stateless Connections (WIP) Original server maintained stateful client information Compicates failover and dynamic load balancing New architecture moves to stateless Facilitates failover since client is not tied to a particular server Facilitates dynamic load balancing Client information is now part of the request context
14
14 OpenJMS Clustering (WIP) OpenJMS will support clustering Servers in the cluster share the same resources Multicast channel for inter server comms Client failover confined to the cluster You can configure multiple independent clusters Client uses multicast channel for connection Clients load balanced within the cluster
15
15 Security (WIP) Security is not specified by the JMS Specifications OpenJMS uses JAAS for Authorization and Authentication Authentication is based on participants Participants are associated with an authentication data source Supported actions are publish, consumer, browse and administer. Security can be turned off Authorization is fine grained and based on destinations, participants and actions
16
16 Deployment Standalone Server Configuration Symmetric Federated Configuration Cluster Configuration Asymmetric Federated Configuration
17
17 Development Environment Jakarta ANT as the project build tool JTF (but will move to Junit for unit testing) Bugzilla for bug management Castor’s SourceGen for configuration ANTLR for selectors A host of open source libraries including log4j and Tyrex OpenExec for load and performance tests
18
18 Current Release Publish-Subscribe and Point-to-Point Persistent and Non-Persistent Message Delivery Synchronous and asynchronous message consumption Administration GUI Message Selectors, Priority and QueueBrowser Local transactions Test cases and extensive examples Stand alone or embeddable server
19
19 Future Direction Refactored messaging core New administration GUI Clustering and federation support Explicit support for XML messaging Improved performance of the messaging core Complete ASF support which includes session pools and XA. IIOP and SSL support
20
20 Resources OpenJMS JMS Specifications ANTLR JUnit Open Source Initiative Castor, Tyrex Jakarta ANT and Log4j http://openjms.exolab.org http://java.sun.com/products/jms http://www.exolab.org http://www.antlr.org http://jakarta.apache.org http://www.junit.org http://www.opensource.org
21
Q & A
22
Thank you
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.