相濡以沫

鱼遇于池,池涸,相濡以沫,相鞠以湿,不若相忘于海。(爱技术、爱时尚)

挨踢老人ID:onlyzhangqin
2307485次访问,排名2好友198人,关注者311
大便的离去是马桶的招唤,还是肛门的不挽留?
onlyzhangqin的文章
原创 663 篇
翻译 11 篇
转载 17653 篇
评论 187 篇
挨踢老人的公告
点我聊QQ
最近评论
xiangyang2009:走过看过爱过
有乐有悲有得
zwb185:我一开始是逆时针.突然转为顺时针了.
但是我不相信我是160的IQ,我是个普通人,嘎嘎
zwb185:我一开始是逆时针.突然转为顺时针了.
但是我不相信我是160的IQ,我是个普通人,嘎嘎
roddic1:有个简便的方法:
1.取消cache模式,
2.禁用脱机功能,
就能修改ost路径了
zhangjunke:天啊
我让她顺时针就顺时针,让她逆时针就逆时针
太厉害了
文章分类
收藏
相册
超女里不多的美女
都是美女
好看好玩
著名的照片
技术
Cisco网络技术(Net130.Com)
CSS在线编辑
DotNet男孩社区
IP查询
Sunmoonfire's artistic matrix
UML软件工程组织
一个好博客(RSS)
中国协议分析网
中国项目管理网
微软帮助和支持
朋友
又一个好博客(RSS)
小人鱼的秘密
我的站长天下
其它
AC MILAN官网
Badged
deshow 在线制作服务
E书下载
IT公司速查手册
msn在线留言
Slide
Webfetti
东方资源
中华电脑书库
博客网址价值评估工具
我爱e书
我的下载Blog
存档
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

转载 Flex如何使用Blazeds与JAVA通信。收藏

新一篇: 十大网络管理员的网络工具软件推荐。 | 旧一篇: WebSphere企业级应用。


淘宝书店:http://shop35357269.taobao.com


上个月25号,Adobe正式发布了万众期待的Flex builder 3.0(,偶就是其中一员哦),同时还将Blazeds开源了。BlazeDS 为Adobe 的一个新的关于远程(Remoting)与网络信息系统(Web Messaging,类似于JMS)的开源项目。BlazeDS 是以前的LCDS ES 的一部分变为开源的。BlazeDS高效简洁完美的远程调用,flex(UI)+BlazeDS(数据通信)+java(后台)一个完美的组合。

       说来也巧,目前我所在的公司的一个电力项目被迫改用JAVA开发,(在此之前是决定用.NET + FLEX的,但是过年一来公司负责人非要改用JAVA)要知道我在过年期间抽时间把框架精心设计了,基础类库都写好了。这时叫我放弃真有点舍不得,再说我之前一直搞.NET开发,对于JAVA可以说是新手呢。

        好了,言归正传,回到我们如何使用Blazeds与JAVA开发的议题上来。首先我们要准备的工具以及类库有:1.eclipse 3.2或3.2以上版本;2.下载相关插件(告诉大家一个好地方,将我们常用的插件全部集中了http://www.easyeclipse.org/site/distributions/server-java.html,当然你也可以下载它帮你集成好的-easyeclipse, 个人认为比myeclipse厚道多了,既免费而且也很全。);3.下载APACHE TOMCAT5.5或5.5以上版本;4.Blazeds;5. Flex builder 3.0插件版。

       我们全部准备好之后,我们首先安装apache tomcat,然后解压eclipse到你指定的目录,接着将你下载的插件依次安装到eclipse(包括flex builder 3.0插件版),最后我们双击打开eclipse设置好你的工作目录后(如果发现你的eclipse不能启动,那么要么你没有安装JAVA环境或者JAVA环境变量有问题,网上有很多此类问题的解决方案。)。

       打开eclipse后,我们点击window菜单选择preference选项,在左边的目录中选择tomcat,指定你所安装的tomcat的目录。如下图

图一

      设置好之后,我们点击OK。接着点击file菜单选择new选项新建一个flex project项目,eclipse设置

       接着我们点击next,输入你的项目名同时选择你的服务器类型为J2EE,并且将use remote object access选中,

eclipse

       做好之后,我们点击next进入下一步,我们在j2ee设置中指定targe runtime为你所安装的apache tomcat,同时我们将我们下载的blazeds_bin_3-0-0-544.zip解压,然后将Flex WAR file一栏中指定到你刚才所解压出的WAR文件,

eclipse 

       做完这一步后,我们就可以直接点击finish了,当然你也可以点击next进入下一步设置你需要的东东哦。

       至此,我们点击flex输出目录中(我的是bin-debug)html文件,选择工具栏上的debug按钮就可以看到flex页面了(要注意的是,如果发现404错误的话,请重新启动你的tomcat服务器),至于如何在flex中通过remoteobject对象调用服务端的方法,我将在下一遍日志中展现给大家。

        Flex的Remoting采用AMF通信协议(Flex3已经升级为了AMF2了),这种协议最大的一个优势就是由于采用了二进制的传输方式,其传输效率非常高,可以让我们在复杂的网络环境获得良好的性能。根据国外一个很牛的老外写的在线测试工具,AMF协议的效率要远远高于webservice以及采用JSON格式承载数据的AJAX方式。 Flex的另一种方式通信就是PollingChannel,它的特点就是它可以多批次的去服务端取数据,而不是长时间保持连接直到所有数据取回之后才关闭我们宝贵的HTTP连接。

       首先我们在WEB-INF下面的Class目录中添加一个JAVA类,如下:

     public class HelloWorld {
         private
String userSaid;
        public
String repeat(String said) {
            this.userSaid = "Reply from server: " + said;
            return this.userSaid;
        }
        public
String sayHello() {
       
Date now = new Date();
        return "Hello World " + now;
     }
  }

        然后我们打开Remoting-Config.xml文件,在service中添加一个目的地指向我们服务端的JAVA类(destination节点),具体如下:

        <service id="remoting-service" class="flex.messaging.services.RemotingService">
        <adapters>
        <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"></adapter-definition>
       </adapters>
     
<destination id="Hello">
       <properties>
         <source>HelloWorld</source>
       </properties>
      </destination>
    <default-channels>
        <channel ref="my-amf">
    </channel>
</default-channels>
</service>

       添加完成之后,我们打开一个flex页面,在上面添加一个RemotObject标签,当然你也可以在可视化状态下拖一个上去,然后添加我们刚才在HelloWorl类中定义的两个方法,并在AS代码块中定义两个回调方法用来异步接收返回的结果或发生的异常,具体代码如下:

       <mx:application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" backgroundcolor="#FFFFFF" viewsourceurl="srcview/index.html">
    <mx:remoteobject id="myservice" fault="faultHandler(event)" showbusycursor="true" destination="Hello">
        <mx:method name="sayHello" result="resultHandler(event)">
        <mx:method name="repeat" result="resultHandler(event)">
    </mx:method>
 
    <mx:script>
        <!–[CDATA[
            import mx.managers.CursorManager;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.events.FaultEvent;
            private function faultHandler(fault:FaultEvent):void
            {
                CursorManager.removeBusyCursor();
                result_text.text = "code:n" + fault.fault.faultCode + "nnMessage:n" + fault.fault.faultString + "nnDetail:n" + fault.fault.faultDetail;
            }
 
            private function resultHandler(evt:ResultEvent):void
            {
                result_text.text = evt.message.body.toString(); // same as: evt.result.toString();
            }
        ]]–>
    </mx:script>
 
    <mx:button x="250" y="157" label="sayHello" width="79" click="myservice.getOperation(’sayHello’).send();">
    <mx:button x="250" y="187" label="Repeat" click="myservice.getOperation(’repeat’).send(myText.text); ">
    <mx:textarea x="10" y="36" width="319" height="113" id="result_text">
    <mx:label x="10" y="10" text="Result:">
    <mx:textinput x="82" y="187" id="myText" text="Sent to server">
</mx:textinput>
</mx:label>

</mx:textarea></mx:button></mx:button></mx:method></mx:remoteobject></mx:application>

     做好之后,激动人心的时刻来临了, F11运行,现在你就可以尽情的与服务端发消息了。注意,JAVA类的序列化与反序列化对我们来说都是透明的,这一切都是FLEX与Blazeds为我们做的。这就是它们带给我们的好处,让我们将重点放在业务逻辑与用户更好的操作性与体验上。




发表于 @ 2008年06月01日 13:12:50|评论(loading...)|编辑

新一篇: 十大网络管理员的网络工具软件推荐。 | 旧一篇: WebSphere企业级应用。

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 挨踢老人