blaseds通信 flex中定义 endpoint的说明


  Author:Allan(吴进刚)
  Flex 调用远程或所在web应用的 BlazeDS服务时,必须建立和远端的通道channel,才能正常通信。
  1.  通常的方式是 Flex 在编译时就指定远程的端点 Endpoint,service-config.xml 中的Endpoint 配置是 例如:
  
  
  
  编译时指定的方式是在加编译参数,例如:
  -services "services-config.xml" -context-root "/testBlazeds"
  services-config.xml 需要放在当前目录下,或者指定BlazeDS所在的配置文件路径。 
  2. 在 RemoteObject/> 对象中指定Endpoint参数,例如: 
  RemoteObject id="r1"  destination="testBlazeds" result="resultHandler(event)" fault="faultHandler(event)" endpoint="/testBlazeds/messagebroker/amf"/>
  或者是定义 channel也可以:
   
  
  RemoteObject id="graphTest1FeedStarter" destination="graphTest1FeedStarter" channelSet="{cs}"/>
  1) 全路径:          endpoint="http://server:8080/testBlazeds/messagebroker/amf" >
  2) 基于contextRoot: endpoint="/testBlazeds/messagebroker/amf" >
  3) 基于当前路径:   endpoint="messagebroker/amf" > 
  总结:
  对于Flex+BlazeDS集成开发,方式1,和2.1),2.2) 对于企业应用来说都不是最佳方案,因为他将 contextroot写死了,不便于移植,也就是说,编译后的 swf 放到其他应用下无法调用BlazeDS服务;
  而对于互联网应用,如果假定 endpoint地址比较固定,编译时指定contextroot或endpoint全路径则是较好的选择,例如一个从google搜索信息Flex的小程序,放到桌面也能跑起来。
  还有一种情况就是,不需要定义 endpoint,这是为什么呢了?原因有可能就是你的flex工程和 web server 工程集成到了一起,flex 默认的会自己去找 channel,而如果 你的flex工程 和 web server 工程不是一个工程,这样就必须自己在 remotObject 里面定义需要的 channel,才能够利用blazeds 与 web server 通信。
  参考 javaeye:Flex+BlazeDS集成开发的编译问题

猜你喜欢

转载自bngdkd.iteye.com/blog/1572723