My flex frontend is using BlazeDS/Tomcat to collect realtime data.
I am using a plain consumer over a standard streaming-amf channel.
<mx:ChannelSet id="channelSet">
<mx:StreamingAMFChannel id="streamingAMF" url="messagebroker/streamingamf/" />
</mx:ChannelSet>
<mx:Consumer id="consumer" channelSet="{channelSet}"
channelConnect="consumer_channelConnectHandler(event)"
channelDisconnect="consumer_channelDisconnectHandler(event)"
message="consumer_messageHandler(event.message)"
fault="consumer_faultHandler(event)"
resubscribeAttempts="-1"
resubscribeInterval="2000"/>
This setup works just fine in all setups but the following. Visible discrepancies are:
The symptom is consumer.subscribed is never set to true, although consumer.subscribe() is invoked, and seen on the server side:
[BlazeDS]13:49:03.922 [DEBUG] [Endpoint.FlexSession] FlexSession created with id '275E7BE0E76EC4C4E8DB08F770BE2846' for an Http-based client connection.
[BlazeDS]13:49:03.922 [INFO] [Endpoint.General] Channel endpoint skydata-streaming-amf received request.
I checked all logs (catalina, stdout and stderr) without any visible clue on what went wrong. Once again, this exact same setup works in all other instances
Any ideas?
The problem comes from Tomcat 7.0 reverting back to Tomcat 6.0 fixed it right away.
There is a hack available here to fix BlazeDS w/ Tomcat 7.