[jdev] Collaboration on BOSH servlet?

Alexey Nezhdanov snakeru at gmail.com
Tue Jan 8 23:38:06 CST 2008

On Wednesday 09 January 2008 08:08:05 Greg Wilkins wrote:
> Hi all,
> I've just tuned into the Jabber/XMPP/BOSH stuff.  I'm the main developer of
> the Jetty webserver and a contributor to the Cometd/Bayeux project at Dojo.
> I've recently been working on using the async features of Jetty to scale
> Cometd/Bayeux to 20,000 simultaneous users on one server:
> http://cometdaily.com/2008/01/07/20000-reasons-that-comet-scales/
> I think that BOSH and XMPP over BOSH are essentially the same technique as
> the long polling used by Bayeux/cometd, so it should be possible to come up
> with a java servlet that scales to similar levels for BOSH/XMPP
> So a couple of questions (some/most being a bit newbie in nature):
> While I understand that much/most/many XMPP applications talk to dedicated
> servers, what is the interest in having XMPP/BOSH terminating in a standard
> java web container?
Sorry, I can not understand that question. Not a java developer, see...

> What is the state of the art with regards to XMPP/BOSH servlets. Googling
> reveals a somewhat confused and perhaps dated picture?
There are severeal implementations of BOSH are available. Punjab, http-bind 
for ejabberd, something in openfire (btw - in java), may be some more. Most 
of them are [nearly ]complete. openfire and ejabberd are the jabber servers 
with http support. punjab is a dedicated software that serves http port and 
connects to jabber server. AFAIK - there are no _http_ servers that support 
bosh natively, so far I've seen only 'proxy connection' configurations that 
forward requests to nearest bosh server.

> The BOSH spec looks pretty straight forward and very similar to what we
> have for Bayeux/cometd I should be able to implement that in a week or so. 
>   But will that be sufficient for XMPP clients and servers to use it or
> will I need to write some XMPP adaption/integration stuff as well?
Well, that depends on what you are calling 'XMPP integration'.
Yes, I think you'll need somewhat light-to-medium integration. Before it was 
the single spec (http-bind), but later it was split in two to clearly divide 
transport stuff from protocol stuff. Still, as I understand - stream 
initiation/termination and may be stream errors passing also should be 
handled separately.
Though, if you just implement what is required in XEP-0124 that should be just 
enough and there wouldn't be need for questions like 'do I need to implement 
xmpp integration stuff'.

> Any interest out there for a BOSH transport for cometd/bayeux?
Well, as there are http servers with bosh support and so far the problem is 
solved via proxying/http support in xmpp servers - yes, I think there is a 
lot of interest for such solution.

> Is this the right forum/community to be asking these questions?
Yes, it is.

> If there are any similar efforts underway, then I'm happy to collaborate
> with them. But then I'm also happy to create a totally new BOSH
> implementation and would be keen to meet anybody interested in
> Collaboration.
Take a look at openfire. If you are both GPL and as you are both java - you 
may be able to share code.

> cheers

Alexey Nezhdanov

More information about the JDev mailing list