camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Prakash Shetty (JIRA)" <>
Subject [jira] [Commented] (CAMEL-6256) Camel xmpp dynamic router is not sending incoming messages to openfire upon first failed groupchatroom join
Date Tue, 09 Apr 2013 15:02:17 GMT


Prakash Shetty commented on CAMEL-6256:

I just debugged using source code. 
It looks like bug in XmppEndpoint.createConnection method. 

If no groupchat room is avalilable, then XmppGroupChatProducer's method doStart;  chat.join()
statement will throw exception. 
Upon this exception, ServiceSupport.stop() is trggered. This triggers XmppGroupChatProducer's
doStop() method.  Here it disconnects the connection and sets to null. Till here pretty much
But XmppEndpoint's connection variable still holds the old connection object and it is in
disconnected and unauthorised state. 

For next successive messages, XmppEndpoint.createConnection will return the old connection
object, but it is in disconnected state.
Because of this, always we will have connection with disconnected and unauthenticated state.

So I feel 'createConnection' not only need to check  for null, but also it should also check
for connected state and authenticated state. 

If anyone feels 'XmppEndpoint.createConnection' is very much correct, then we need to modify
XMPPGroupChatProducer's doStart() or doStop() method. 

I still feel need to correct XmppEndpoint.createConnection  method changes. 

Exception is thrown for 2nd and later messages at  chat = new MultiUserChat(connection, room);
statement of XmppGroupChatProducer's doStart() method. 
Exception says 'Not connected to the server'. So It means that we need to reconnect and authenticate
it if disconnected from earlier unit of work.

> Camel xmpp dynamic router is not sending incoming messages to openfire upon first failed
groupchatroom join
> -----------------------------------------------------------------------------------------------------------
>                 Key: CAMEL-6256
>                 URL:
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-xmpp
>    Affects Versions: 2.10.3
>         Environment: camel xmpp routing with openfire xmpp server.  Used groupchat configurations
>            Reporter: Prakash Shetty
>            Priority: Critical
>              Labels: connection, groupchat, xmpp
>   Original Estimate: 24h
>  Remaining Estimate: 24h
> Reference :
> {code:xml} 
> <camel:route id="eventSubscriber">
>                         <camel:from uri="ref:eventReceiverUri" />
>                          <camel:dynamicRouter>                  
>                     <camel:method ref="eventRouterBean" method="processEvent"/>
>                 </camel:dynamicRouter>
>                 </camel:route> 
> {code}
> In eventRouterBean's processEvent method, we are building xmpp groupchat room url depending
upon the message and forwading the same message into respective groupchatrooms. 
> If resulting groupchat room is not existing, it will log message 
> WARN 2013-04-05 17:55:48,190 ( processAsync:162) - Caught unhandled
exception while processing ExchangeId: ID-INGBTCPIC8NB038-63130-1365164745141-0-3 
> org.apache.camel.FailedToCreateProducerException: Failed to create Producer for endpoint:
Reason: not-allowed(405) 
>         at org.apache.camel.impl.ProducerCache.doGetProducer(

>         at org.apache.camel.impl.ProducerCache.doInAsyncProducer(

>         at org.apache.camel.processor.RoutingSlip.processExchange(

>         at org.apache.camel.processor.RoutingSlip.doRoutingSlip(

>         at org.apache.camel.processor.RoutingSlip.process( 
>         at org.apache.camel.util.AsyncProcessorHelper.process(

>         at org.apache.camel.processor.DelegateAsyncProcessor.processNext(

>         at org.apache.camel.processor.DelegateAsyncProcessor.process(

>         at

>         at org.apache.camel.util.AsyncProcessorHelper.process(

> and ...... 
> Caused by: not-allowed(405) 
>         at org.jivesoftware.smackx.muc.MultiUserChat.join( 
>         at org.apache.camel.component.xmpp.XmppGroupChatProducer.doStart(

>         at 
>         at org.apache.camel.util.ServiceHelper.startService( 
>         at org.apache.camel.impl.ProducerCache.doGetProducer(

>         ... 40 more 
> This is still fine. 
> But issue is if I create a groupchat room in openfire, it should forward new incoming
message to same groupchat room. But it is not forwarding.
> It is keep on logging error message as 'Not connected to the server' repeatedly for all
> But if I restart the camel context, then it starts working. 
> Looks like it is caching url and its connection as not allowed in dynamic router. 
> What will be the solution? 
> And even the exception is thowing at ProducerCache.doGetProducer().. 
> So how to clear cache for failed connections?

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message