`
raymond2006k
  • 浏览: 291453 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Flex+BlazeDS集成开发的编译问题

阅读更多
    Flex 调用远程或所在web应用的 BlazeDS服务时,必须建立和远端的通道channel,才能正常通信。
  1.  通常的方式是 Flex 在编译时就指定远程的端点 Endpoint,service-config.xml 中的Endpoint 配置是 例如:
<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" 

    编译时指定的方式是在加编译参数,例如:
引用
  -services "services-config.xml" -context-root "/HelloBlazeds"

   services-config.xml 需要放在当前目录下,或者指定BlazeDS所在的配置文件路径。

http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=2&postId=12209

  2. 在 <mx:RemoteObject/> 对象中指定Endpoint参数:
     例如: 
   
 <mx:RemoteObject id="roOrder" destination="Hello" showBusyCursor="true" endpoint="http://server:8080/HelloBlazeDS/messagebroker/amf" >

     1) 全路径:          endpoint="http://server:8080/HelloBlazeDS/messagebroker/amf" >
     2) 基于contextRoot: endpoint="/HelloBlazeDS/messagebroker/amf" >
     3) 基于当前路径:   endpoint="messagebroker/amf" >

  总结:
    对于Flex+BlazeDS集成开发,方式1,和2.1),2.2) 对于企业应用来说都不是最佳方案,因为他将 contextroot写死了,不便于移植,也就是说,编译后的 swf 放到其他应用下无法调用BlazeDS服务;
    而对于互联网应用,如果假定 endpoint地址比较固定,编译时指定contextroot或endpoint全路径则是较好的选择,例如一个从google搜索信息Flex的小程序,放到桌面也能跑起来。

[参考资料]
1. http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=2&postId=12209
2. http://www.iteye.com/topic/238127
分享到:
评论
9 楼 smallbee 2013-01-06  
smallbee 写道
smallbee 写道
LZ你好,感谢你的分享。按照你说的配置,我使用endpoint="messagebroker/amf" >
这种方式。结果和你说的一样,是可以跑的,但是前提是swf和Html生成必须是上下文的目录,即比如应用是FBCBC,那么它的output folder结果必须是FBCBC,如果我想在上下文新建一个文件夹,比如AA,即访问地址需要的是 IP:PORT/FBCBC/AA/XXX.HTML这种,好像无法通信,请问如何解决。

已经被我解决。
方法如下:举例AA为monitor
修改web.xml  
<url-pattern>/monitor/messagebroker/*</url-pattern>
修改services-config.xml中为<endpoint url="http://{server.name}:{server.port}/{context.root}/monitor/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
我也是反编译推到出来的。现在遇到一个Https配置问题,不知道你有没有遇到过?

测试了下,如果   3) 基于当前路径:   endpoint="messagebroker/amf" >  这种,好像对于Https和http没有影响。

8 楼 smallbee 2013-01-06  
smallbee 写道
LZ你好,感谢你的分享。按照你说的配置,我使用endpoint="messagebroker/amf" >
这种方式。结果和你说的一样,是可以跑的,但是前提是swf和Html生成必须是上下文的目录,即比如应用是FBCBC,那么它的output folder结果必须是FBCBC,如果我想在上下文新建一个文件夹,比如AA,即访问地址需要的是 IP:PORT/FBCBC/AA/XXX.HTML这种,好像无法通信,请问如何解决。

已经被我解决。
方法如下:举例AA为monitor
修改web.xml  
<url-pattern>/monitor/messagebroker/*</url-pattern>
修改services-config.xml中为<endpoint url="http://{server.name}:{server.port}/{context.root}/monitor/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
我也是反编译推到出来的。现在遇到一个Https配置问题,不知道你有没有遇到过?
7 楼 smallbee 2013-01-06  
LZ你好,感谢你的分享。按照你说的配置,我使用endpoint="messagebroker/amf" >
这种方式。结果和你说的一样,是可以跑的,但是前提是swf和Html生成必须是上下文的目录,即比如应用是FBCBC,那么它的output folder结果必须是FBCBC,如果我想在上下文新建一个文件夹,比如AA,即访问地址需要的是 IP:PORT/FBCBC/AA/XXX.HTML这种,好像无法通信,请问如何解决。
6 楼 PointOnLine 2009-11-24  
我搞了半天,还得加上这句才行。你们是怎么做的? 请赐教……
5 楼 kjj 2009-03-25  
如果用得是myeclipse +flex+blazedS的话,会自动为你搞定这个问题饿!
4 楼 raymond2006k 2009-03-25  
yexin218 写道
楼主,有个问题,为什么一定要写endpoint,因为不写的话也可以做到啊。我每次使用blazeds都没有写这一句啊,为什么要写呢,说一下啊~


endpoint是和服务器端做通信。

我试过不写,无法调用BlazeDS服务。

你是怎么做的? 请赐教了,贴一下你的 RemoteObject定义代码
3 楼 rainsf 2009-03-23  
endpoint不需要写的,有destination就够。
2 楼 yexin218 2009-03-22  
楼主,有个问题,为什么一定要写endpoint,因为不写的话也可以做到啊。我每次使用blazeds都没有写这一句啊,为什么要写呢,说一下啊~
1 楼 ehow 2009-02-25  
挺好

相关推荐

Global site tag (gtag.js) - Google Analytics