Reading Time: 3 minutes

Some time ago I wanted to do a Mule demo. I’m a Jabber fan so I wanted to use the XMPP transport for the demo.

I soon found out that the XMPP transport in its current form doesn’t work with real world Jabber servers any more. SSL connections are negotiated through TLS now and authentication seems to involve SASL – two things that the outdated smack version we’re using for the XMPP transport cannot currently do.

So I decided to not only update the library but rather make the config of the transport more user friendly.

One thing I never liked about the old XMPP transport was that all the connection information had to be in the endpoint URLs. This created weird runtime scenarios where for each endpoint a new connector object had to be created because the connector was the one holding the connection to the Jabber server.

The new config will allow you to configure Jabber host, user and password on the connector. Here’s a config example:

<xmpp:<a href="!/?types=connector" target="_blank" rel="" title="Cloud Connectors" >connector</a> name="jabber" host="" user="username" password="secret"/>

The endpoints will only have the type of message to use and the recipient/sender. Here’s a config example:

<xmpp:outbound-endpoint type="MESSAGE" recipient=""/>

or, as endpoint URL:

<outbound-endpoint address="xmpp://MESSAGE/"/>

For now I’m still developing the new transport in private because I don’t want to break the 3.0 build. Once I have a working transport it’ll be available as part of the public Mule 3.0 snapshots.

I’m really open to suggestions so if you want to help shape the new XMPP transport or have other suggestions, thoughts, or contributions, I’d like to hear about them.