精通Flex 3.0――14.3.2 创建通过Remoting访问服务端的Flex应用

  下面通过创建一个通过调用服务端Java类的Flex应用说明Remoting服务的使用。

1)打开14.2节当中创建的LCDSFlexStu项目。点击【File|New|other】菜单项。弹出【New】对话框,如图所示。选择【Java|Class】选项。单击【Next】按钮,进入【New Java Class】对话框。

2)在【New Java Class】对话框中的【Package】文本框中填入“com.lcdsstu”,在【Name】文本框中填入“Hello”。其他设置使用缺省值,如图所示。单击【Finish】按钮,完成创建。

3)打开com.lcdsstu包下创建出的Hello.Java文件修改代码如下所示。

package com.lcdsstu;

public class Hello {

//定义一个方法返回字符串,等待远程调用。

         public String HelloLCDSRemoting(String name){

                   return "Hello"+name+"LCDS";

         }

}

4)打开remoting-config.xml文件,修改代码如下所示。

<?xml version="1.0" encoding="UTF-8"?>

<service id="remoting-service"

    class="flex.messaging.services.RemotingService">

    <adapters>

        <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>

    </adapters>

    <default-channels>

        <channel ref="my-amf"/>

</default-channels>

    <destination id="HelloRemoting">

        <properties>

            <source> com.lcdsstu.Hello</source>

        </properties>

    </destination>

</service>

5)在LCDSFlexStu项目当中新建一个【MXML Application】命名为LCDSHello。打开LCDSFlexStu.mxml文件修改代码如下所示。

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script>

         <![CDATA[

         //引如需要的类库

                   import mx.rpc.events.FaultEvent;

                   import mx.rpc.remoting.RemoteObject;

                   import mx.controls.Alert;

                   import mx.rpc.events.FaultEvent;

                   import mx.rpc.events.ResultEvent;

                   //声明一个RemoteObject

                   private var HelloJava:RemoteObject=new RemoteObject("HelloRemoting");

                   private function JavaHello():void{

                            //添加调用成功和调用失败的监听

                            Hellojava.addEventListener(FaultEvent.FAULT,HelloJavaFault);

                            Hellojava.addEventListener(ResultEvent.RESULT,HelloJavaResult);

                            Hellojava.HelloLCDSRemoting(name_txt.text);

                   }

                   //声明调用失败的监听函数

                   private function HelloJavaFault(event:FaultEvent):void{

                            //显示错误信息

                            Alert.show(event.message.toString(),"调用失败");

                   }

                   //声明调用成功的监听函数

                   private function HelloJavaResult(event:ResultEvent):void{

                            //显示返回结果

                            Alert.show(String(event.result),"调用成功");

                   }

         ]]>

</mx:Script>

<mx:Style>

         global{

                   fontSize:12pt;

         }

</mx:Style>

         <mx:Button label="调用Java" horizontalCenter="0" verticalCenter="22" click="JavaHello()"/>

         <mx:TextInput id="name_txt" horizontalCenter="0" verticalCenter="-23" />

</mx:Application>

在上面的代码中声明RemoteObject类实例的同时指明了在remoting-config.xml文件当中声明的Java类的别名。这样就可以直接调用远程的Java类。Hellojava.HelloLCDSRemoting(name_txt.text);代码中直接调用JavaHello的方法HelloLCDSRemoting

6)运行LCDSHello.mxml,效果如图所示。在文本框中输入文本,单击【调用Java类】按钮,弹出返回结果对话框,效果如图所示。

 

通过上面的例子可以看出,Flex通过LCDS可以直接调用服务端的Java类,这样就可以实现用户交互层和业务逻辑层的无缝连接,略去了通过HTTP进行文本转换的步骤,数据类型也可以自动转换。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值