当前位置:首页 > 行业资料 > 国内外标准规范 > Springblazedswithamf讲解
AMF么不就adobe的一个RPC(远程过程调用协议)的方案么,直接使用就行了;但是恶心于adobe的AMF构架(java版本blazeds【BlazeDS是一个基于服务器的Java远程控制(remoting)和Web消息传递(messaging)技术,它能够使得后端的Java应用程序和运行在浏览器上的AdobeFlex应用程序相互通信。】),实在让人不写不快,也希望给用AMF的人少走点弯路。先来看个firstpractice同时amf的相关文档很简单,直接通过flex就能访问到java的service,如果熟悉dwr的一定知道这个与dwr有惊人的相似;但是这个构架存在一个理念上的问题,纯理念上的。1.耦合了客户端和服务端的开发,客户端和服务端的开发都需要同一个flex/services-config.xml(services-config.xml配置了channel和destination2.一个客户端只能绑定一个amf服务(如果访问不同服务器的amf服务,无法配置)3.amf构架自己的beancontainer,无法与传统的spring容器进行整合。这三个问题,一度让人放弃amf框架,比如采用json协议甚至更便捷,更能跨各种语言(amf目前只有稳定的php版本,不算稳定的java版本)好在springblazeds框架的出来(目前也不算稳定)能很好的解决了这个问题。首页和配置所有的springmvc一样配置一个dispatcher(假设你已经了解了spring和amf)servletservlet-nameblazeds/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classload-on-startup1/load-on-startup/servletservlet-mappingservlet-nameblazeds/servlet-nameurl-pattern/blazeds/*/url-pattern/servlet-mapping其次在blazeds-servlet.xml配置brokerflex:message-broker/borker默认其实就是指向了上文里面的web-inf/flex/services-config.xml(当然可以指定目录的位置不一定非要在flex下面)这里面定义了channel;而原本定义的destination则不需要在这里定义,而是通过直接暴露springbean的方式来调用flex:remote-serviceref=weaponAdminServicechannles=my-admin-amf/这里的意思用weaponAdminService这个springbean来暴露destination,同时destination的id也就是weaponAdminService;同时使用的channl就是my-admin-amf具体参见然后flex那边不需要如上文中配置一个J2EEserver的工程,只需要正常的建立一个flex工程;通过amf的run-timeconfiguration机制就可以配置varemployeeRO:RemoteObject=newRemoteObject();employeeRO.destination=weaponAdminService;varadminChannelSet:ChannelSet=newChannelSet();adminChannelSet.addChannel(newAMFChannel(my-admin-amf,));employeeRO.channelSet=adminChannelSet;employeeRO.getOperation(getWeapons).addEventListener(ResultEvent.RESULT,getListResultHandler);employeeRO.getOperation(getWeapons).addEventListener(FaultEvent.FAULT,faultHandler);employeeRO.getOperation(getWeapons).send();publicfunctiongetListResultHandler(event:ResultEvent):void{varresults:ArrayCollection=event.resultasArrayCollection;Alert.show((results[0]asWeapon).id+,'OK');}publicfunctionfaultHandler(event:FaultEvent):void{Alert.show(event.fault.faultString,'Error');}这样就可以正常的结合spring和amf至于为什么要用amf呢?只能说看个人喜欢,现在RPC的规范多得是,AMF不算主流,纯粹是因为这个是adobe原生的而已。
本文标题:Springblazedswithamf讲解
链接地址:https://www.777doc.com/doc-1083414 .html