精通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进行文本转换的步骤,数据类型也可以自动转换。


版权声明:本文为Flex_program原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。