一、Flex的RemoteObject的基础知识
可以使用 Flex RemoteObject 组件来针对 ColdFusion 组件或 Java 类调用方法。
RemoteObject 组件使用 AMF 协议发送和接收数据,而 WebService 和 HTTPService 组件使用 HTTP 协议。AMF 显著快于 HTTP,但服务器端编码和配置通常更复杂。
与 HTTPService 和 WebService 组件一样,您可以使用 RemoteObject 组件在应用程序中显示数据库查询结果。也可以使用该组件在数据库中插入、更新和删除数据。在将查询结果返回到应用程序之后,可以将其显示在一个或多个用户界面控件中。
二、对RemoteObject的改写
我的工作语言主要是java,这里使用RemoteObject的后台服务程序就是用java编写,传统的RemoteObjec的写法是,在服务端里的配置文件remoting-config.xml里写道:
<destination id="MoginDemo">
<properties>
<source>bean.MoginDemo </source>
<scope>application</scope>
</properties>
</destination>
<mx:RemoteObject id="ro" destination="LoginDemo" fault="Alert.show(event.fault.toString())">
我的框架是使用flex+spring+ibatis
重新改造后:
添加一个新的配置文件,内容如下:
<?xml version="1.0" encoding="GB2312" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:flex="http://www.springframework.org/schema/flex" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/flex
http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">
<!-- Custom exception translator configured as a Spring bean -->
<bean id="myExceptionTranslator" class="common.MyServerException" />
<!-- Bootstraps and exposes the BlazeDS MessageBroker simplest form -->
<flex:message-broker id="_messageBroker"
services-config-path="/WEB-INF/flex/services-config.xml">
<flex:mapping pattern="/messagebroker/*" />
<flex:exception-translator ref="myExceptionTranslator" />
</flex:message-broker>
<!--
another configuration that Bootstraps and exposes the BlazeDS
MessageBroker <bean id="mySpringManagedMessageBroker"
class="org.springframework.flex.core.MessageBrokerFactoryBean">
<property name="servicesConfigPath"
value="classpath*:flex/services-config.xml" /> </bean>
-->
<!-- Maps request paths at /* to the BlazeDS MessageBroker -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>
/*=_messageBroker
</value>
</property>
</bean>
</beans>
这样就把flex的服务器通讯的配置文件和spring兼容。具体的配置使用spring注解的功能,军写入到java文件里,例如:
@Transactional
@Service("userGroupService")
@RemotingDestination(channels={"my-amf","my-secure-amf"})
public class UserGroupServiceImpl implements UserGroupService {
@Autowired
@Qualifier("userGroupDao")
private UserGroupDao userGroupDao;
@Autowired
@Qualifier("userDao")
private UserDao userDao;
@Override
public Boolean delUserGroup(Map<String, String> params) {
Boolean isSuccess = true;
try {
userDao.delete(params);
userGroupDao.delete(params);
} catch (Exception e) {
isSuccess = false;
e.printStackTrace();
}
return isSuccess;
}
@Override
public Map<String, String> getUserGroup(Map<String, String> params) {
Map<String, String> userGroup = null;
try {
userGroup = userGroupDao.get(params);
} catch (Exception e) {
e.printStackTrace();
}
return userGroup;
}
@Override
public List<Map<String, String>> getUserGroupList(Map<String, String> params) {
List<Map<String, String>> list = null;
try {
list = userGroupDao.getList(params);
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
@Override
public Boolean updateUserGroup(Map<String, String> params) {
Boolean isSuccess = true;
Object userGroupId = params.get("userGroupId");
try {
if(userGroupId == null){
userGroupDao.add(params);
}else{
userGroupDao.update(params);
}
} catch (Exception e) {
isSuccess = false;
e.printStackTrace();
}
return isSuccess;
}
}
@RemotingDestination(channels={"my-amf","my-secure-amf"})每个service类里添加这个即可。
到了Flex这块,我们写了个ServiceFactory.as,代码如下:
package common
{
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.messaging.Channel;
import mx.messaging.ChannelSet;
import mx.messaging.channels.AMFChannel;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.remoting.RemoteObject;
import mx.utils.ObjectProxy;
public class ServiceFactory
{
private static var channel:Channel;
public static function getService(serviceName:String):RemoteObject
{
if(channel == null)
{
channel = new AMFChannel("my-amf", "http://localhost:8080/dispatcher/messagebroker/amf");
}
var service:RemoteObject = new RemoteObject();
var cs:ChannelSet = new ChannelSet();
cs.addChannel(channel);
service.channelSet = cs;
service.destination = serviceName;
service.addEventListener(FaultEvent.FAULT,showError);
return service;
}
private static function showError(e:FaultEvent):void {
Alert.show(String(e.fault.message), "错误");
}
}
}
flex里的调用方法是:
private var userGroupService:RemoteObject = ServiceFactory.getService('userGroupService');
分享到:
相关推荐
在本文中,我们将深入探讨如何使用Flex中的RemoteObject组件封装后与Java应用程序进行通信。RemoteObject是Adobe Flex框架的一部分,它允许Flex客户端与服务器端的业务逻辑进行交互,通常是通过AMF(Action Message ...
eclipse3.7 + flash builder 4.5插件 + tomcat6.X调试通过,一个flex remoteobject简单例子(BlazeDS)。实际导入后指定flex server--java settings--blazeds.war的路径
在Flex4中,RemoteObject是ActionScript 3.0中的一种重要组件,它允许与后端服务器进行数据交互,如处理业务逻辑、访问数据库等。在这个"flex4 remoteobject 多文件上传的例子"中,我们将重点探讨如何使用...
一个用Flex调用JAVA方法的例子ffffffff
### Flex与RemoteObject通讯连接方式详解 #### 一、引言 随着互联网技术的发展,前后端分离成为一种常见的开发模式。在Flex框架中,通过使用RemoteObject组件可以方便地实现客户端与服务器之间的通信。本文将详细...
在Flex中访问RemoteObject实例涉及以下知识点: 1. **ActionScript 3.0**:Flex的主要编程语言是ActionScript 3.0,它是基于ECMAScript的一个面向对象的语言。在Flex中,我们通过编写ActionScript代码来实现业务...
### Flex中ActionScript动态调用RemoteObject类 在Flex中,使用ActionScript动态调用RemoteObject类是一种常见的实现客户端与服务器端交互的方式。通过这种方式,开发者可以在客户端灵活地调用服务器端的服务,并...
在本篇博文中,我们将探讨如何使用Flex的RemoteObject来实现客户端与服务器之间的交互。 首先,让我们理解RemoteObject的基本工作原理。RemoteObject类是Flex与服务器之间进行数据交换的桥梁。当你创建一个...
在Flex开发中,与后端服务进行数据交互是常见的需求,`RemoteObject` 是Adobe Flex框架提供的一种组件,用于在Flex客户端与服务器之间实现远程调用(RPC, Remote Procedure Call)。`RemoteObject` 可以方便地将Flex...
### Flex中RemoteObject与Java的通信 在Flex开发过程中,实现客户端与服务器端的数据交互是一项基本而又关键的任务。其中,`RemoteObject`是Adobe Flex框架提供的一个强大的组件,它允许Flex应用程序通过AMF...
在Flex和Java的集成应用中,RemoteObject是关键的通信组件,它允许Flex客户端与Java后台服务进行数据交换。 RemoteObject是Flex框架中的一个关键组件,它通过AMF(Action Message Format)协议,提供了一种高效、轻...
RemoteObject是Flex提供的一种服务,它使得客户端与服务器端之间的通信变得简单,尤其是对于需要调用远程服务或业务对象的情况。 在Flex中,RemoteObject组件是实现AMF(Action Message Format)协议的关键。AMF是...
LCDS(LiveCycle Data Service)是由FDS(Flex Data Service)发展而来,通过LCDS与服务器端通信不但可以大大提高通信的效率,而且还能提供传统B/S结构没有的功能。由于目前LCDS只能通过war包的形式提供给服务端,...
在Flex开发中,为了实现客户端(Flex应用)与服务器端(通常是Java应用)的数据交互,开发者经常使用`RemoteObject`组件。本篇文章将深入探讨如何使用`RemoteObject`与Java进行JSON格式的数据交换,以便更好地理解和...
本篇将深入探讨Blazeds RemoteObject组件在Flex与Java集成中的作用、原理以及实践方法。 Blazeds全称为BlazeDS,它是一个开源项目,允许Flex客户端与Java服务器进行实时双向通信。Blazeds通过使用AMF(Action ...
在与Flex3的集成中,可能需要设计一套数据访问接口,使Flex客户端能通过RemoteObject调用这些接口来读取、更新和删除数据。 在实际项目中,"MANAGER"可能是一个目录或者文件,它可能包含了项目的管理相关的代码或者...
RemoteObject是Adobe Flex框架中的一个特性,允许在客户端(如Flash Player)和服务器端之间进行透明的RPC(远程过程调用)通信。 在Flex应用中,RemoteObject是客户端与服务器交互的关键组件,它提供了与服务器...
在Java中进行Flex开发时,RemoteObject是一种关键的技术,它允许Flex客户端与后端服务器进行数据交换。本文将深入解析如何配置和使用Flex RemoteObject,以便在Java环境中实现高效的远程调用。 首先,理解Flex ...
首先,Flex中的RemoteObject是Flex与后端服务通信的一种方式,它允许开发者在Flex客户端与服务器之间传递数据和服务调用。在这个游戏里,RemoteObject被用来连接到运行在Tomcat上的后台服务,这可能是一个用Java编写...