我的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.subscript()被调用,并在服务器端看到:
[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),但没有任何明显的错误线索。同样,这种完全相同的设置适用于所有其他实例
有什么想法吗?
问题来自Tomcat 7.0恢复到Tomcat 6.0,并立即修复
这里有一个黑客可以修复BlazeDS w/Tomcat7。
检查使用者的连接属性一次。如果可能的话,还可以发布通道集配置。
我一直在使用Tomcat7,没有发现任何问题,而是使用它,因为它基于Servlet 3.0规范,可能支持多个客户端。我在这里找到的。