iBus is a pure Java messaging product family offering the JMS abstraction atop a variety of operating system platforms and transport protocols. iBus products are available for free download from http://www.softwired-inc.com.iBus consists mainly of three products:
iBus//MessageServer
A JMS implementation supporting both the PTP and Pub/Sub model, as well as message persistence, transactions, HTTP tunneling, access control to JMS destinations, and SSL security.
iBus//MessageBus
A fully distributed message bus middleware implementing the JMS Pub/Sub model atop reliable IP multicast communication. This product is typically used on trading floors and in data centers.
iBus//Mobile
A JMS add-on product allowing the seamless integration of mobile devices into a JMS infrastructure. This product is typically used for wireless portals and wireless ASP (WASP) solutions.
iBus offers an end-to-end JMS platform in that it runs not only on server platforms and workstations, but also on mobile phones, PDAs, and communicator devices. A list of the main features provided by the iBus product family is shown below:
High scalability, performance, and reliability
Hierarchical access control, client authentication, and data encryption
Administration GUI and administration API
Built-in integration with XML parsers
XML message type
Built-in integration with LDAP and other JNDI providers
JMS message delivery via TCP, HTTP, SSL, and reliable IP multicast
JMS message delivery via wireless bearers (GPRS, UMTS, SMS) using an optimized transmission protocol
JMS message transformation to and from WML and other formats, using XML Style Sheets
Light-weight JMS client library suitable for mobile devices and Applets
Run-time library allowing applications written in C and C++ to produce and consume JMS messages
iBus//MessageServer comes with a set of applications for running the message server, administering the server, configuring JMS destinations, etc. These applications are available in the Start menu for Windows installations.
This batch file is used for starting the iBus message server. For Windows installations, a shortcut is provided in the iBus//MessageServer program group:
The message server accepts messages from, and delivers messages to, the JMS client applications. Persistent JMS messages are stored in an embedded database, which is part of the iBus//MessageServer product offering. Optionally, iBus//MessageServer can be configured to store JMS messages in an Oracle database.
The screenshot below shows the iBus//MessageServer server up and running:
iBus//MessageServer can be configured for various transport protocols (notably TCP, HTTP, and SSL), to use an Oracle database instead of the default database that is bundled with iBus//MessageServer, for using thread pools internally, and so on. The Config Wizard allows you to easily create customized configurations of the message server:
This graphical user interface allows you to create administered topics and queues, to manage access control lists, to track JMS message flows, and to perform other message server administration tasks. Note that this must be downloaded separately from the message server. The screenshot overleaf shows the Administration Client with the screen for monitoring and administering message flows:
The Administration Client is also provided in a text-based version, allowing message server administration to occur also on console terminals:
iBus//MessageServer further provides a wizard for configuring an external Oracle database, a Client Shell tool for compiling and running JMS client applications easily, and an administration API for performing iBus//MessageServer administration tasks programmatically in Java.
iBus//MessageServer can be combined with iBus//MessageBus as well as with iBus//Mobile, leading to an end-to-end JMS platform for wired and wireless systems.
We will be storing the administered JMS objects in the internal JNDI namespace provided by iBus//MessageServer and later look them up using JNDI.
First start the iBus//MessageServer by selecting the Start Server shortcut located in the iBus//MessageServer program group on Windows, or by executing the startserver.sh shell script on Unix. The shell script is located in the server/bin subdirectory of the iBus//MessageServer installation.
Next, start the iBus//MessageServer Admin Client by selecting the Start Admin shortcut located in the iBus//MessageServer Admin Client program group on Windows, or by executing the startAdmin.sh shell script on Unix. The shell script is located in the adminClient/bin subdirectory of the Admin Client installation.
Click on the Messages button, select Topics in the tree panel on the left-hand side. A form appears into which you can enter the topic name, myTopic, and click Create:
iBus//MessageServer comes configured with a topic and a queue connection factory under the names TopicConnectionFactory and QueueConnectionFactory. Further factories can be set up and bound by the user using LDAP, but it is very rarely that an iBus//MessageServer user needs to carry out this task. Change the following line in the code to run PortableJMSClient.java on iBus//MessageServer:
public static final String TOPIC_FACTORY = "TopicConnectionFactory";
For running JMS clients, iBus//MessageServer provides a Client Shell tool in the iBus//MessageServer Windows program group. The Client Shell opens a Windows command tool with the Java classpath set up correctly for running iBus//MessageServer clients. So there is no need to include any extra JAR files in the classpath.
The following command-line arguments should be passed to the program for running the client:
ch.softwired.jms.naming.IBusContextFactory - This is the initial context factory for the JNDI lookup
localhost - This is the JNDI service provider URL
The figure below shows the JMS client running against iBus//MessageServer:
The warnings occur because iBus//MessageServer prefers a client to set a client ID when it creates a topic or queue connection, as we saw in the code in Chapter 11.