100% Open Source Clustering plugin


I am unashamedly soliciting help to finish the OpenClustering project I started to provide a fully open source clustering plugin for Openfire with no dependencies on closed or licensed software.

If you can afford to be a co-owner or contributor, please let me know.

For more details, see http://community.igniterealtime.org/message/210904#210904

1 Like

This is of interest to me. I was looking at the GSoC, but looks like their timeline is past us up again!

Dele, can we have your project efforts organized somewhere on site? Forum threads are get lost too easily.


GSoC http://code.google.com/soc/

We can create a separate space for this, like Openfire Clustering Dev. Or we can unhide Openfire 3.4.0 Beta with Clustering space, if you need stuff from there.

It is already unhidden. I found it at http://community.igniterealtime.org/community/developers/openfire-3-4-0-beta and has been very useful.

Not sure we need GSoC as most of the code is all written. It is the testing and dev support form the experts here that is need when debugging starts.

Visiting the link said, “Unauthorized It appears you’re not allowed to view what you requested. You might contact your administrator if you think this is a mistake.”

Permissions are a bit screwed on igniterealtime at the moment. I used to be able to blog, but not any more.

It should now be available for everyone by http://community.igniterealtime.org/community/developers/openfire-clustering (and also viewable in Spaces browser).

Bug report:

I set up 2 openfire 3.7 servers pointing to the same MYSQL DB. And both of the servers have been installed the clustering plugin 1.2.1 (I rename the .war file to .jar in the zip)

And I use 2 spark clients for the test. 1 is connected to server1(clientA) and the other to server2(clientB)

-When I shut down server2 manually, clientA still finds the clientB online.

-After restarting server2 and reconnection in clientB, it finds clientA offline (but in fact clientA is always online).ClientA still finds clientB online. Then I try to send messages between 2 clients. I found that clientA cant receive message from clientB but clientB can receive message from clientA.

That means there are fake online status and also invisible problems.

Thank you for reporting the fault. Let me see if I can fix it

I have posted a new version. I have done a bit more reading about Shoal Clustering and I have now added a properties file with default values to use IP Multicast for node discovery.

Shoal configuration paramters that can be changed from system properties are

Default Value


Unlike Coherence one node needs to be identified as the bootstrap node using the xmpp.server.clustering.is.bootstrapping.node system property. Other nodes should be set as false.

Is there the ability to assign unicast-listener for nodes? I had been using this to avoid unnecessary multi-cast router traffic by specification from file tangosol-coherence-override.xml.




      <socket-address id="1">




      <socket-address id="2">






Funny you should ask about unicast.

I have just added the parameter xmpp.server.clustering.virtual.multicast.uri.list.

You can use a unicast TCP uri like tcp://server_hostname:5200

See http://wikis.sun.com/display/shoal/Shoal+How-To+-+Configuring+for+cross+subnet+s upport for more details


Great project.

You have my support. I’m not yet sure when I will need it, but sooner or later I will.

I will take a look at the source code and see if I can help.



Hi Michael,

Thank you so much.


What version of Shoal should i setup? How do i install Shoal on windows?

That link no longer works. Can you re-link that?