HomeDigital EditionSys-Con RadioSearch Web Services Cd
B2B Beginning WS Business Process Management Case Studies Content Management Distributing Computing e-Business Electronic Data Interchange Enterprise Industry Insight Integration Interviews Java & Web Services .NET Portal Product Reviews Scalability & Performance Security SOAP Source Code UDDI Wireless WS Standards WS Tips & Techniques WSDL WS Editorials XML

SpiritWave 4.4 from SpiritSoft is a vendor-independent, JMS-compliant messaging system that provides a common interface to heterogeneous messaging systems. It supports the publish/subscribe and point-to-point messaging paradigms. To leverage existing investments in messaging systems, SpiritWave provides transport drivers for IBM's MQ Series, Tibco's Rendezvous, Microsoft's MSMQ, OpenTrade's Orbita, and Active Software's ActiveWorks products. It also provides a pure Java JMS implementation for both queue-based and publish/subscribe messaging. Figure 1, from SpiritSoft's Web site, illustrates the overall architecture in which the SpiritWave messaging system interacts with third party transports.

Figure 1

Working with SpiritWave
Installation and Administration

Installation of SpiritWave is straightforward and is available for both Windows and Unix systems. For this review, I've installed SpiritWave on a Windows 2000 Professional machine, with a Pentium III and 256 Mb of RAM. Once installed, the administration and message queue applications are available along with several sample applications that supplement the documentation.

SpiritSoft provides a common administration architecture for all of its products, called SpiritAdmin. Configuration information is housed in XML data files that may be stored in various formats, including a JDBC-compliant database.

SpiritWave's provided messaging transport comes in two flavors: Standard and Enterprise. The two drivers provide the same services with regards to message transportation, but the Enterprise component adds the capability to validate users and control access to destinations. It's optimized for a distributed enterprise messaging, whether queueing or publish/subscribe. Each messaging transport is fully configurable from the SpiritAdmin console provided.

As mentioned earlier, SpiritWave contains several modules to allow message transport systems to become accessible via the JMS API. For the modules that provide access to the provided message queue, three options or modes exist: Unadministered, Administered, and Enterprise. Under the Unadministered configuration, the messaging system and its communicating clients aren't controlled from a centralized configuration mechanism. Configuration details are set up by the individual application and may be stored independently, often within a JNDI tree. In the Administered mode, the configuration details for the transport module are stored within the repository established for the SpiritAdmin framework. This repository may be, for example, XML files or a JDBC database. In the third option, Enterprise, the modules incorporate the user management and destination access services components of the SpiritAdmin architecture.

Development
For this review, I've created a simple application that can accept XML requests from various external sources through a messaging subsystem. The messaging subsystem will be implemented with SpiritJMQ, a JMS-compliant message transport. I've placed the connection and queue into a JNDI tree inside IBM's WebSphere 3.5.3 application server. SpiritWave also provides integration with BEA's WebLogic application server through predefined registration classes and deployment descriptors.

The first task in working with SpiritWave is to establish and bind the queue connection factory and a default queue into the JNDI tree. To accomplish this, a simple registration servlet executed at server startup will create the necessary objects and perform the binding. Once in the JNDI tree, the objects are available to clients and message-driven EJBs for processing.

If the developer is working with WebLogic, the registration process is straightforward and easy to configure. SpiritSoft provides a startup class that takes no parameters and reads its configuration information from an XML file. The configuration file specifies all communication properties for SpiritWave and the JNDI binding information.

Connections to the SpiritWave messaging system may be obtained in two ways. The first uses the standard JMS connection factories, queue or topic, appropriate for the task at hand. The second incorporates SpiritWave's WaveProfile object that defines the implementation details of the underlying transport. If a developer chooses the WaveProfile approach, it's incorporated in the creation of the connection factory.

WaveProfiles separate the message transportation and storage mechanisms to provide flexibility to the developer and the application environment. For storage, the developer may choose between the object-oriented databases from ODI and Versant, and a standard relational database accessed via JDBC. For this review, I've chosen to use a JDBC connection to Oracle 8i.

After retrieving a JMS connection, a session is created through the standard procedure. The developer must specify the acknowledgement option and whether or not the session is transacted. When using transacted connections, no messages are delivered until specific commits are issued from the publishing object. Subsequently, messages aren't acknowledged until specific commits are issued from the message consumers.

JMS destinations may be obtained using either the standard JMS approach or the proprietary option available through SpiritWave. If a developer is using JNDI, as in this review, the standard method must be used to obtain a topic or queue. If, however, an alternative repository contains the destination object, the developer has the choice to use lookup methods on the SpiritWave class appropriate for the object desired. All objects are identified by a logical name. Future releases of SpiritWave will support JNDI.

For the remaining process of transferring messages through the system, creating the message, sending, receiving, and managing the connections, SpiritWave relies on the standard JMS API calls.

SpiritWave provides several enhancements to the messaging system that provides further control and management of items. They include:

  • Subscription Listening: Message publishers can determine if topics or queues have been subscribed to prior to publishing a message.
  • Connection Inbox: When a subscriber connects to a topic, the raised subscription event's reply To method returns the inbox on the current connection. This may be used to send a unique message to the subscribing client.
  • Wildcards: For topic subscribers, wildcards may be used to identify the topics the application should subscribe to.
  • Retrieve the Last Message: Spirit- Wave's JMQ driver provides the capability for subscribers to retrieve the last message sent to a topic without subscribing. This can facilitate the initialization processes for the subscribing agent.
As mentioned earlier, SpiritWave provides several sample applications to provide guidance for new developers. These examples are very helpful and cover a full range of development scenarios, including queue-based messaging, publish/ subscribe messaging, working with JMS and JNDI, development with the Enterprise version of JMQ, and examples for some of the enhancements to the API listed above. Several of these examples provided guidance as I set up my application for this review.

Summary
SpiritSoft's SpiritWave provides a tool that allows existing messaging systems to be leveraged and extended by the JMS API. With its ties to the major messaging vendor products such as Tibco Rendezvous and the IBM MQSeries, along with its supplied messaging system, SpiritWave presents a flexible and reliable framework on which to build message-oriented applications.

SpiritSoft
100 Medway Road
Suite 203
Milford, MA 01757

Test Environment:
Pentium III, 256Mb RAM, Windows 2000

Price:
$9,700 per developer
Server run-time: $5,500 per CPU

Client run-time:
$5,000 per 50 users
$3,000 per adaptor per server
(Adaptors for IBM MQ series, RV5, RV6, ETX, MSMQ, etc.)

FOR SALES INFORMATION:
Tel: 1 508 473-3227
E-mail: sales@spirit-soft.com

Editor's Note:
SpiritWave 5.0, the newest version of this messaging system, was released after this review was written. SpiritWave 5.0 is the first open JMS framework to provide multi-plug adaptors to integrate any proprietary legacy message-oriented middleware (MOM) system. These multi-plug drivers enable easier development of distributed systems by neutralizing the dependency on vendor-specific interfaces and by managing these proprietary MOM systems so IT managers don't have to. SpiritWave 5.0 includes drivers for all leading proprietary MOM products such as IBM MQSeries, MSMQ, Tibco Rendezvous, and Tibco ETX.

Author Bio:
Brian R. Barbash is a consultant for the Consulting Group of Computer Sciences Corporation. He specializes in application architecture and development, business and technical analysis, and Web design. bbarbash@csc.com

All Rights Reserved
Copyright ©  2004 SYS-CON Media, Inc.

  E-mail: info@sys-con.com

Java and Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. SYS-CON Publications, Inc. is independent of Sun Microsystems, Inc.