Flex应用BlazeDS时报错:[RPC Fault faultString="发送失败" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed

刚接触Flex,在学习BlazeDS的时候,碰见这个问题,调了一天也不知道为什么

错误[RPC Fault faultString="发送失败" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 404: url: 'http://localhost:8080/WebContent/messagebroker/amf'"]

上网狂搜,终于解决了。

参考http://www.cnblogs.com/adaikiss/archive/2010/08/17/1801231.html

发送请求总是404 NOT FOUND! 后来在网上看到有人提到

http://localhost/WebContent/messagebroker/amf

对比自己的请求,也是这样的...

services-config.xml里明明是

http://{server.name}:{server.port}/{context.root}/messagebroker/amf

的,我的webapp访问用的也是项目名,而不是WebContent呀,然后试着把services-config.xml里的

{context.root}用项目名替换,不成功,然后去项目根目录看,发现

.flexProperties文件里有段

<flexProperties enableServiceManager="false" flexServerFeatures="4" flexServerType="8" flexWarLocation="E:/blazeds.war" serverContextRoot="/WebContent" serverRoot="E:/workspaces/flex/WebContent" serverRootURL="http://localhost:80/flex" toolCompile="true" useServerFlexSDK="false" version="2"/>

真凶终于出来了...就是serverContextRoot="/WebContent"这个,把它改成项目名,问题就解决了...

这个是创建项目时自动生成的,谁知道它会这么傻...

还有一种方法是说在mxml中的RemoteObject对象定义时加上endpoint="messagebroker/amf" 属性。(这个没试过)

但是为什么会这样?项目由eclipse自动生成,难不成每次都要去改这个.flexProperties文件?

还有就是serverContextRoot,serverRoot,serverRootURL分别有些什么用?请明白的大侠指导下,谢了!

原文地址:https://www.cnblogs.com/huangzy/p/1957000.html