0

我的 flex 前端使用 BlazeDS/Tomcat 来收集实时数据。
我在标准流媒体 amf 频道上使用普通消费者。

<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"/>

此设置在所有设置中都可以正常工作,但以下设置除外。可见的差异是:

  • Windows 2008 服务器与 Linux 或更旧的 Windows
  • Java 1.7.0 与 1.6.0
  • Tomcat 7.0 与 6.0

症状是consumer.subscribed从未设置为true,尽管调用了consumer.subscribe()并在服务器端看到:

[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.

我检查了所有日志(catalina、stdout 和 stderr),但没有任何明显的线索说明出了什么问题。再一次,这个完全相同的设置适用于所有其他情况有

什么想法吗?

4

2 回答 2

1

问题来自Tomcat 7.0恢复到 Tomcat 6.0 立即修复它。这里

有一个 hack 可以用Tomcat 7 修复 BlazeDS。

于 2012-07-13T14:42:11.923 回答
0

一旦检查消费者的连接属性。如果可能的话,还要发布频道集配置。

我一直在使用 Tomcat7 并没有发现这样的问题,而是我正在使用它,因为它基于 Servlet 3.0 规范并且可能支持多个客户端。我在这里找到了。

于 2012-07-13T04:10:50.220 回答