Question

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:

  • Windows 2008 server vs Linux or older Windows
  • Java 1.7.0 vs 1.6.0
  • Tomcat 7.0 vs 6.0

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?

Était-ce utile?

La solution

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.

Autres conseils

Once check the connected property of the consumer. And also post the channel set configuration, if possible.

I have been using Tomcat7 and found no problem as such, rather I am using it as it is based on Servlet 3.0 specification and may support multiple clients. I found it here.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top