`

flex 通过BlazeDS 调用服务端方法时报 http://……/messagebroker/amf 404

    博客分类:
  • Flex
阅读更多
今天在做新项目时碰到了一个问题,我在MXML文件中声明了一个RemoteObject,然后尝试web端发送请求调用后台方法时,却怎么也发送不出去。因为我设置了如果失败就弹出event.fault.faultString,所以它一直弹出“Send fail”的提示,而JRUN控制台则提示 "Requested resource /messagebroker/amf file not found;,通过firefox差错就是报/messagebroker/amf 404。我就去查帮助,然后检查自己的配置文件是否正确。还好原来做过这样的项目,问题很快定位到了,在此做一笔记,作为总结或者希望能够帮助到出现类似问题的IT民工们。
问题的最终原因 是因为 编译的时候{context.root} 不会在Eclipse中被设定,如果你要使用Flex Builder在本地编译的话,就需要吧 {context.root} 替换成你的程序的根路径,一般来说就是WEB-INF文件夹的父文件夹。

原本在 flex-config.xml中是有这么一项的:
<context-root>/flex</context-root>

但是Eclipse既然不识别,方法有两种:
1、直接将web端项目中的service-config.xml做如下更改:
原配置中有这么一段:
<channel-definition id=&#34;my-amf&#34; class=&#34;mx.messaging.channels.AMFChannel&#34;>
<endpoint uri=&#34;http://{server.name}:{server.port}/{context.root}/messagebroker/amf&#34; class=&#34;flex.messaging.endpoints.AMFEndpoint&#34;/>
<properties>
<polling-enabled>false</polling-enabled>
</properties>
</channel-definition>

<channel-definition id=&#34;my-secure-amf&#34; class=&#34;mx.messaging.channels.SecureAMFChannel&#34;>
<endpoint uri=&#34;https://{server.name}:9100/{context.root}/messagebroker/amfsecure&#34; class=&#34;flex.messaging.endpoints.SecureAMFEndpoint&#34;/>
</channel-definition>

<channel-definition id=&#34;my-polling-amf&#34; class=&#34;mx.messaging.channels.AMFChannel&#34;>
<endpoint uri=&#34;http://{server.name}:{server.port}/{context.root}/messagebroker/amfpolling&#34; class=&#34;flex.messaging.endpoints.AMFEndpoint&#34;/>
<properties>
<polling-enabled>true</polling-enabled>
<polling-interval-seconds>8</polling-interval-seconds>
</properties>
</channel-definition>


大家注意红色部分的 {context.root}, 你只要把它改为你的程序根路径就可以了,你可以更改所有的channel,也可以只更改需要用到的channel。比如,我用的是RemoteObject,而RemoteObject使用的是 my-amf channel,我的程序根路径为flex。所以我就做了以下更改:


<channel-definition id=&#34;my-amf&#34; class=&#34;mx.messaging.channels.AMFChannel&#34;>
<endpoint uri=&#34;http://{server.name}:{server.port}/flex/messagebroker/amf&#34; class=&#34;flex.messaging.endpoints.AMFEndpoint&#34;/>
<properties>
<polling-enabled>false</polling-enabled>
</properties>
</channel-definition>


我的改法就是直接把工程名和主机名写进去。例如//localhost:8080/{flexproject}。
2、
flex项目右键——>选择   flex服务器,设置“上下文根目录”,如图所示:
http://dl.iteye.com/upload/attachment/599343/a7a544a0-cc65-3b14-9e4f-498e129c9f67.png
设置完后,重器应用。
  • 大小: 49.6 KB
分享到:
评论

相关推荐

    Spring BlazeDS + flex

    Flex客户端通过AMF格式发送请求到服务器端的BlazeDS,BlazeDS负责将AMF格式转换为Java对象,并将这些对象传递给Spring容器。Spring容器处理完请求后,将结果返回给BlazeDS,BlazeDS再将其转换为AMF格式返回给Flex...

    Flex前端与Java服务端交互反射机制.doc

    RemoteObject destination="userService" result="processResult(event)" id="us" fault="Alert.show(event.fault.message.toString())" endpoint="http://localhost:8080/BlazeDS_Java_Flex/messagebroker/amf"&gt; ...

    使用BlazeDS实现flex与java 整合

    1. **Remoting Service**:通过AMF协议提供远程方法调用,使得Flex客户端可以直接调用Java服务端的方法。 2. **LiveCycle Data Services**:提供了高级的数据管理功能,如数据推送、数据缓存和数据分页等。 3. **...

    Blazeds 的flex端主动订阅消息

    在Flex端订阅消息的核心在于使用 BlazeDS 的 MessageBroker 服务,它提供了AMF(Action Message Format)通道,使得Flex客户端可以与服务器端的业务逻辑进行高效的数据交换。下面我们将深入探讨如何实现这个功能。 ...

    FLEX——blazeDS原理.pdf

    - **远程对象调用**:允许Flex/AIR客户端直接调用Java后端的方法,简化了前后端之间的交互流程。 - **安全控制**:通过MessageBroker的验证和授权机制,可以有效地保护后端资源的安全。 #### 四、案例分析 假设...

    BlazeDS 数据通信技术

    &lt;endpoint url="http://servername:8400/myapp/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/&gt; &lt;/channel-definition&gt; &lt;/channels&gt; ``` ##### 2.1 为Flex组件指定通道 如果通过编译参数`-...

    flex与java的通信 Blazeds remoteObject

    &lt;endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/&gt; &lt;class&gt;com.example.MyJavaService&lt;/class&gt; &lt;/source&gt; &lt;/...

    Flex与java交互 远程调用方式

    通过MXML,你可以定义`RemoteObject`实例,指定服务端的目标URL和服务名,然后绑定到ActionScript方法,这些方法会在调用Java服务时触发。例如: ```xml &lt;fx:Declarations&gt; &lt;s:RemoteObject id="myService" ...

    Flex Spring框架成BlazeDS

    &lt;endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/&gt; &lt;/channel-definition&gt; &lt;/channels&gt; ``` 在这个例子中,`...

    基于Java_BlazeDS_Flex_服务器消息推的聊天室

    Remoting允许Flex客户端直接调用Java服务端的方法,而MessageBroker则支持发布/订阅(Publish/Subscribe)模式的消息传递,也就是我们所说的服务器推送。 服务器推与传统的客户端拉取(如Ajax轮询)相比,有显著...

    Flex与服务器端通信

    - ** BlazeDS的MessageBroker**:MessageBroker允许Flex应用通过HTTP或HTTPS通道使用HTTP长轮询、WebSocket或StreamingAMF等方式与服务器进行双向通信。 3. **C#服务器端配合Flex通信** - **C#与AMF**:在C#中,...

    Flex开发入门

    然后,你就可以在Flex代码中调用服务端的方法了: ```actionscript myService.myMethod({param1: "value"}, resultHandler, faultHandler); ``` 此外,`flexWeb`可能代表了一个Flex Web应用程序的实例,它通常包含...

    BlazeDS与Spring 的结合

    7. 发布并运行,Flex 客户端通过 `&lt;mx:RemoteObject&gt;` 标签访问 Java 对象,如 `&lt;mx:RemoteObject id="as3" destination="test" endpoint="http://localhost:8080/MyServer/messagebroker/amf"/&gt;`。 这种结合的关键...

    flex、spring、hibernate整合的项目步骤

    Spring的BlazeDS Integration是与Flex集成的关键组件,它允许我们在Flex客户端与Spring服务端之间进行数据交换。BlazeDS是Adobe提供的一个免费的服务器端技术,用于实现在Flex和Java之间进行AMF(Action Message ...

    spring flex BlazeDS 集成官方文档(英文)

    &lt;bean id="messageBroker" class="org.springframework.messaging.simp.config.MessageBrokerRegistry"&gt; &lt;value&gt;/topic&lt;/value&gt; &lt;value&gt;/queue&lt;/value&gt; &lt;/list&gt; &lt;/property&gt; ...

    flex 和java 一起开发.实验远程调用.

    remoteService.endpoint = "http://localhost:8080/myapp/remoting/messagebroker/amf"; remoteService.myMethod.addEventListener(ResultEvent.RESULT, onResult); remoteService.myMethod.addEventListener...

    Flex与Spring整合详解

    &lt;mx:RemoteObject id="ro" destination="goodService" result="returnData(event)" fault="getError(event)" endpoint="http://localhost:8080/demo/messagebroker/amf" /&gt; &lt;mx:Script&gt; &lt;![CDATA[ import mx....

    51CTO下载-使用BlazeDS实现Java和Flex通信(PDF+源码

    - **MessageBroker**: 通过HTTP或WebSocket提供消息发布/订阅模型,支持事件驱动的通信。 4. **配置BlazeDS** 在Java应用服务器(如Tomcat)上部署BlazeDS,需要配置`services-config.xml`文件,定义数据源、通道...

    Flex和j2ee整合.rar

    6. ** Messaging **:如果应用需要实时通信或发布/订阅模式,可以利用Flex的LiveCycle Data Services(LCDS)或者BlazeDS的MessageBroker,配合JMS(Java Message Service)实现实时数据传输。 7. ** Error ...

Global site tag (gtag.js) - Google Analytics