[jdev] Integrating XMPP with enterprise applications

Matt Tucker matt at jivesoftware.com
Wed Sep 14 00:55:24 CDT 2005


First, I would firgure out the max number of concurrent users of your
application. If it's not more than a couple hundred, you should just use
Smack or JSO (one client per connection) and not worry about it further.
However, there are certainly cases where one connection per client in
the app-server just won't cut it. We've run into this problem when
trying to make our web-based group chat client scale to a large number
of users.

To address this exact problem, we've started up Project Pampero:
http://www.jivesoftware.org/forums/forum.jspa?forumID=48. The overall
theme is to bring a much higher level of scalability to Jive Messenger.
As part of that effort we'll define an extension to the component JEP to
make it possible to aggregate multiple clients on a single TCP/IP
connection (which makes it possible to to have a two-tier connection
manager architecture). Once we've created that protocol and support it
in Jive Messenger, we'd also like to support it in Smack. That should
accomplish exactly what you're looking for.

There's no schedule on when any of this will be done, but you're more
than welcome to join our effort. :)

As another (partial) approach -- you can get presence information for
users over HTTP when using the Jive Messenger presence service plugin.
You can either get a user's presence as an image for easy integration
into existing pages, or get it as XML (REST style web service). I know
that other servers have similar functionality. Download of the plugin is
at: http://www.jivesoftware.org/messenger/plugins.jsp


> -----Original Message-----
> From: jdev-bounces at jabber.org 
> [mailto:jdev-bounces at jabber.org] On Behalf Of Raffaele Sena
> Sent: Tuesday, September 13, 2005 8:51 PM
> To: jdev at jabber.org
> Subject: [jdev] Integrating XMPP with enterprise applications
> Hello,
> I am struggling with a problem and I thought of asking your opinion.
> I want to use a Jabber/XMPP server for an enterprise 
> application but I want a much stricter integration that 
> simply hosting an IM server on the same network with my application.
> I want to add presence and possibly chat and other messanging 
> capabilities to my application so that information and 
> conversations can be shared between the application and the 
> XMPP server.
> These are some of the use cases:
> - a user is accessing the application via a rich internet client.
>   - The application should send presence information to the 
> XMPP server.
>   - The application should send presence information from the 
> XMPP server to the rich internet client
> - the application or the rich internet client offer some sort 
> of chat capabilities (peer to peer and multichat)
>   - Users in the chat should appear as users in the XMPP server
>   - The application should send chat messages to the XMPP server
>   - The application should forward messages (sent by regular 
> XMPP clients) from the XMPP server to the rich internet clients
> The "standard" (and easy way) of doing this is by either 
> embedding an XMPP client in my rich internet clients (but my 
> application server will have no visibility of the XMPP 
> traffic) or by using one of the available client libraries 
> and have the application server open one XMPP connection to 
> the XMPP server for each one of the  rich internet clients. 
> Both these solutions seems pretty heavy to me.
> What I would really like to do is have a single connection 
> between the application server and the XMPP server and some 
> state information in the application server for the connected 
> clients. I thought that I could use the server-to-server 
> protocol to talk between the application server and the XMPP 
> server but there is no standard "server" library available 
> (JSO seems to support have some support for s2s but there are 
> no examples of how to use it).
> I may just bite the bullet and write my own library or 
> dissect an XMPP server and take some code for there but first 
> I thought I would ask on this forum if this seems to be a 
> valuable solution (or there is some better or more "standard"
> way of doing this ?).
> Any comment is appreciated.
> Thanks!
> -- Raffaele Sena

More information about the JDev mailing list