OttoBus is a messaging toolkit using the publish/subscribe paradigm rather than using network addresses: one or more clients subscribe to a subject and whenever an application publishes a message to that subject, all subscribers will receive the message.
The advantage is that only one message is sent over the network in stead of one message per client. A disadvantage is that the underlying technology uses multicasts so that routing may become an issue.
|0.1||First public release|
|0.2||Supports serialized Java objects|
|1.0||Supports messages longer than 64K bytes and supports only one message format (that is: there is no backwards compatibility)|
This release adds a couple of new features:
Unfortunately, with the implementation of message fragmentation and re-assembly, another layer of complexity has been added. The current implementation works fine if all fragments arrive at the destinations, but if fragments get lost in cyberspace, there is no other recovery mechanism in place but to drop the received fragments after a timeout.
These are the current goals for the OttoBus project, unfortunately not all of them are implemented at this stage:
As of now, only the first goal and, partially, the second and third goal (all platforms supporting java should be able to use the toolkit) are reached.
As for the rest of the goals: they make a nice wish list for future versions ;-)
No project is complete with a catchy name and I wanted to have a name
that contained at least the word
BUS. So, the word
Ottobus was the first thing that came to mind. In my own
dialect this means something like
autobus (a public means
of transportation) which is not entirely unrelated to the subject
handled by this toolkit: it transports messages over a public network
A quick search on the net on the word
Ottobus turned up a
couple of pages written in some Scandinavian language, so it is not
entirely impossible that this word is actually used as such in one or
more langugaes ;-)
A brief history describes how I came to start the OttoBus project and what its primary intended targets are.
The technical description page explains how the OttoBus toolkit works, as well as some known limitiations in the current implementation.
A quick explanation of the sample code that is part of the distribution may clarify how to use the OttoBus toolkit.
The remote debugging features are demonstrated by another sample program.
The distribution format has been changed slightly since version 0.1: there are now three compressed tar files available:
ottobus-1.0-bin.jarcontains the compiled classfiles
ottobus-1.0-javadoc.tar.gzcontains the javadoc documentation
ottobus-1.0-src.tar.gzcontains the java source files and the javadoc documentation
The kits contain both the Ottobus implementation and two sample applications:
test_awtis an AWT application that can be used to send and received OttoBus messages
SampleDebuggeris also an AWT application that uses the OttoBus remote debugging features
Note for windows users: compressed tar files can be opened with a number of archiving tools like "WinZip" and the like.
Now that the 64K byte limit per message has been solved, that implementation could become a bit more robust by implementing a retry mechanism. Once the fragmentation works reliably, streaming data and guaranteed delivery might be implemented.
Another feature in the pipeline is a Ruby implementation, along with support for serialized Ruby objects.
Security features are currently not (yet) in the works.
Copyright © 2000-2001 Eddy Vanlerberghe. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of Eddy Vanlerberghe shall not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY EDDY VANLERBERGHE ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL EDDY VANLERBERGHE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|This project is hosted by SourceForge.||
Last Update: 16 September 2001