2010-11-21 88 views
0

我试图将Flash客户端连接到BlazeDS。使用vanilla BlazeDS设置的其他人已经取得了一些成功。然而,我正在使用springource的新的Spring BlazeDS集成并搁浅。 Flash客户端似乎正在工作,我可以看到返回对象正文中的正确数据,但由于某种原因未知,它无法投射为IMessage。它未能在PollingChannel.as上的主题为错误TypeError:错误#1034:类型强制失败:无法将Object @ 1456c7b9转换为mx.messaging.messages.IMessage

  var messageList:Array = msg.body as Array; 
      for each (var message:IMessage in messageList) <-- 

在应用负载我注册了一大堆的类,像这样

registerClassAlias(“flex.messaging.messages.RemotingMessage”这一行,的RemotingMessage ); registerClassAlias(“mx.messaging.messages.IMessage”,IMessage); 等。

我的代码基本上是

 var channelSet:mx.messaging.ChannelSet = new mx.messaging.ChannelSet(); 
     var channel:mx.messaging.channels.AMFChannel = new AMFChannel("my-amf", "http://localhost:8400/SpringA/messagebroker/amf"); 
     channelSet.addChannel(channel); 

     var consumer:mx.messaging.Consumer = new Consumer(); 
     consumer.channelSet = channelSet; 
     consumer.destination = "simple-feed"; 
     consumer.subscribe(); 
     consumer.addEventListener(MessageEvent.MESSAGE, test); 


    private function test(event:IMessage) 
    { 
     trace("msg.."); 
     // breakpoint never makes it here 
    } 

我有一个Flex客户端与相同目的地址/通道工程100%。

+0

发布错误将有助于 – s84 2010-11-21 05:45:28

+0

是否有一个原因,您的'测试'方法是采取IMessage而不是MessageEvent? – 2010-11-22 21:45:22

回答

2

标题中的错误意味着你出于某种原因,有一个对象未​​实施或延长消息对象接口,因此该循环无法施展它在这一部分:

for each (var message:IMessage in messageList){ 

或者你应该确保你不添加任何不扩展或实现的东西,或者检查变量IS是否实际上是ext./imp。它。此外 - 如果你想这样做,你将不得不改变每个这样的:

for each (var obj in messageList){ 
    if (obj is IMessage){ 
     var message:IMessage = obj as IMessage; 
     // DO STUFF HERE 
    } 
} 
+0

感谢您的回复。该代码位于Flex SDK的rpc部分。这是否意味着编译此版本的rpc.swc的新版本? – MikeW 2010-11-22 13:40:50

+0

哦。如果它是像这样的SDK,那不是一个错误。只要确保不在“messageList”(即传递给SDK函数的一些参数)中添加任何未扩展或实现IMessage接口的东西。 – 2010-11-22 16:04:58

0

添加此对象映射:

registerClassAlias("flex.messaging.io.ObjectProxy", ObjectProxy); 
0

如果您的Java VO对象已覆盖hashcode()方法可能会发生这种情况。

删除hashcode()覆盖(如果可以的话)。

请参阅我的博客了解我如何发现此问题的背景故事。 http://squaredi.blogspot.com/2013/12/remoting-landmine-without-stack-trace.html

+1

请注意,[只有链接的答案](http://meta.stackoverflow.com/tags/link-only-answers/info)不鼓励,所以答案应该是搜索解决方案的终点(vs.而另一个引用的中途停留时间往往会随着时间推移而过时)。请考虑在此添加独立的摘要,并将链接保留为参考。 – kleopatra 2013-12-06 15:45:39

相关问题