Flex调用Java对象:远程访问教程

4星 · 超过85%的资源 需积分: 3 17 下载量 110 浏览量 更新于2024-11-10 收藏 2KB TXT 举报
"本文档提供了一个关于如何使用Flex与Java对象进行交互的示例,主要涉及Flex中的ActionScript远程调用Java对象的技术。" 在Flex和Java集成的场景中,通常需要通过ActionScript来访问Java应用程序中的对象和方法。这个过程涉及到几个关键步骤: 1. 编写Java类:首先,你需要创建一个Java类,如`FlexCallJava`,它包含你要暴露给Flex的公共方法。在给出的例子中,`FlexCallJava`有一个名为`getString()`的方法,该方法打印一条消息并返回"sucess"字符串。 ```java package org.common; public class FlexCallJava { public String getString() { System.out.println("flexcalljavasucess!"); return "sucess"; } } ``` 2. 配置Remoting服务:接下来,需要配置Flex Remoting服务,这通常通过修改`remoting-config.xml`文件完成。在这个文件中,定义了一个名为`fcj`的服务目的地,它指定了`FlexCallJava`作为源。Remoting服务使用JavaAdapter适配器,使得ActionScript可以与Java对象通信。 ```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 id="my-amf"/> </default-channels> <destination id="fcj"> <properties> <source>org.common.FlexCallJava</source> </properties> </destination> </service> ``` 3. 在Flex中创建RemoteObject:在Flex的MXML界面中,使用`<mx:RemoteObject>`标签来创建一个与Java对象的连接。指定`destination`属性为`fcj`,与`remoting-config.xml`中的目的地ID匹配。这样,你就可以通过`fcjInstance`引用来调用Java对象的方法。 ```xml <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init();"> <mx:Script> <![CDATA[ import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; private function init():void { fcjInstance.getStringResult.addEventListener(ResultEvent.RESULT, handleResult); fcjInstance.getStringFault.addEventListener(FaultEvent.FAULT, handleError); fcjInstance.getString(); } private function handleResult(event:ResultEvent):void { var result:String = event.result as String; trace("Result from Java: " + result); } private function handleError(event:FaultEvent):void { trace("Error: " + event.fault.message); } ]]> </mx:Script> <mx:RemoteObject id="fcjInstance" destination="fcj"/> </mx:Application> ``` 在这个MXML应用中,`init()`函数在组件创建完成后调用,触发`getString()`方法,并设置事件监听器以处理返回的结果或可能出现的错误。`handleResult`函数接收并打印结果,而`handleError`函数处理任何错误信息。 通过这种方式,Flex客户端能够无缝地调用Java服务器端的对象和方法,实现了客户端与服务器端的双向通信。这种技术在开发富互联网应用程序(RIA)时非常有用,因为它允许ActionScript代码与Java后端进行交互,从而利用Java的强大功能和Flex的用户界面优势。