AIR:Client.Error.MessageSend

昨天做毕业设计的时候遇到了一个问题,就是在 AIR 中我使用RemoteObject 调用JAVA对象的时候总是无法调用,用Alert把错误信息弹了出来,如下:

faultCode:Client.Error.MessageSend
faultString:’Send failed’
faultDetail:’Channel.Connect.Failed error NetConnection.Call.BadVersion: : url:’http://ontactManager.swf/samples/messagebroker/amf”

服务器端我用的是Blazeds——Adobe做的一个开源的类似于FDS的东西,一开始我百思不得其解啊,以前从来没有遇到过这种错误啊,仔细检查了一下Blazeds的配置文件和RemoteObject的 destination属性也没有发现错误。无奈,只好Google之,虽然没有搜索到答案,但是我发现别人写RemoteObject的时候用到了一个属性:endpoint,其实这个属性是在Blazeds 或者 FDS 的配置文件中是已经有默认定义的,一般都在 WEB-INF\flex\services-config.xml 中定义的,RemoteObject默认的信息传送channel是 “my-amf”,而在services-config.xml有如下定义:

《channel-definition id=”my-amf” class=”mx.messaging.channels.AMFChannel”/》
《endpoint url=”http://{server.name}:{server.port}/{context.root}/messagebroker/amf” class=”flex.messaging.endpoints.AMFEndpoint” /》

blazeds用的是tomcat服务器,如果正常的话其实endpoint应该是 http://localhost:8400/samples/messagebroker/amf 的,但是不知道为什么,Flex Builder却自动把我的AIR程序的endpoint默认为http://ontactManager.swf/samples/messagebroker/amf,莫名其妙,于是我自己在程序里定义了 RemoteObject 的 endpoint 属性,测试了一下,程序OK,哈哈,我学习和探索的能力真强!

后来又查了一下帮助文档,在 Language Reference 里面的对 RemoteObject 的 endpoint 属性解释后面有这么一句话:

Note: This property is required when creating AIR applications.

也就是说,AIR程序如果使用RemoteObject 的话就必须自己定义endpoint ! 又学会了一点东西,以后记住了。

BTW,好久没有体会到编程的乐趣了,昨天忽然找到那种久违的幸福的感觉了,浑身都觉得痛快舒服。近一年多我动手编程时间明显不如大一和大二,人文社科的东西学得比较多,总怕自己变得狭隘了。现在我得重拾编程的乐趣了,杂七杂八的东西学得差不多了。

生命已经苏醒,没有什么能阻挡它生根发芽了。



本文链接: http://www.zhuoqun.net/html/y2008/982.html 转载请注明出处,谢谢。

TrackBack引用地址:http://www.zhuoqun.net/html/y2008/982.html/trackback

相关日志



6条评论

  • At 2008.04.08 10:31, kundouzhishou CHINA said:

    哈哈

    • At 2008.04.16 18:54, notepad CHINA said:

      我最近试用weborb for php v2.0.2 抽出一个例子单独做了个flex builder 3的工程,指定服务端技术使用php, 清理了remoting-config.xml中的一些配置,只留下例子相关的配置, 编译参数也加上了 -services 但是swf老报错trace了一下,得到错误:[FaultEvent fault=[RPC Fault faultString="Send failed" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed error NetConnection.Call.BadVersion: : url: 'http://127.0.0.1/weborb/weborb.php'"] messageId=”A0C6EE96-236A-855A-9D81-56C2DD2FA819″ type=”fault” bubbles=false cancelable=true eventPhase=2]
      现在自己找不到原因,急死人啊

      • At 2008.04.16 20:57, Dreamer CHINA said:

        你设置一下 endpoint ,在Flex Builder中的 RemoteObject 里直接设置,别使用默认的。

      • At 2008.04.17 10:43, yuyu CHINA said:

        hehe
        你好厉害啊

        • At 2008.05.07 16:32, 路过 CHINA said:

          你怎么发现的fb改了你的那个属性啊?在哪个地方发现的啊?

          • At 2008.05.07 16:53, Dreamer CHINA said:

            有错误就会提示。。

          (Required)
          (Required, will not be published)