`
sharpxiajun
  • 浏览: 8060 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Flex的RemoteObject改写(原创)

阅读更多
一、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');


分享到:
评论
1 楼 lvxinzhi 2011-10-20  
有没有演示工程代码?

相关推荐

    flex remoteObject封装后和java通信

    在本文中,我们将深入探讨如何使用Flex中的RemoteObject组件封装后与Java应用程序进行通信。RemoteObject是Adobe Flex框架的一部分,它允许Flex客户端与服务器端的业务逻辑进行交互,通常是通过AMF(Action Message ...

    flex remoteobject调用java服务

    eclipse3.7 + flash builder 4.5插件 + tomcat6.X调试通过,一个flex remoteobject简单例子(BlazeDS)。实际导入后指定flex server--java settings--blazeds.war的路径

    flex4 remoteobject 多文件上传的例子

    在Flex4中,RemoteObject是ActionScript 3.0中的一种重要组件,它允许与后端服务器进行数据交互,如处理业务逻辑、访问数据库等。在这个"flex4 remoteobject 多文件上传的例子"中,我们将重点探讨如何使用...

    Flex BlaseDS remoteObject 例子(这个是错的,大家不要下了,SORRY)

    一个用Flex调用JAVA方法的例子ffffffff

    Flex和RemoteObject通讯连接方式

    ### Flex与RemoteObject通讯连接方式详解 #### 一、引言 随着互联网技术的发展,前后端分离成为一种常见的开发模式。在Flex框架中,通过使用RemoteObject组件可以方便地实现客户端与服务器之间的通信。本文将详细...

    flex访问remoteObject实例

    在Flex中访问RemoteObject实例涉及以下知识点: 1. **ActionScript 3.0**:Flex的主要编程语言是ActionScript 3.0,它是基于ECMAScript的一个面向对象的语言。在Flex中,我们通过编写ActionScript代码来实现业务...

    flex中actionscript动态调用remoteobject类

    ### Flex中ActionScript动态调用RemoteObject类 在Flex中,使用ActionScript动态调用RemoteObject类是一种常见的实现客户端与服务器端交互的方式。通过这种方式,开发者可以在客户端灵活地调用服务器端的服务,并...

    Flex的remoteObject例子

    在本篇博文中,我们将探讨如何使用Flex的RemoteObject来实现客户端与服务器之间的交互。 首先,让我们理解RemoteObject的基本工作原理。RemoteObject类是Flex与服务器之间进行数据交换的桥梁。当你创建一个...

    FLEX和使用RemoteObject和后台通信

    在Flex开发中,与后端服务进行数据交互是常见的需求,`RemoteObject` 是Adobe Flex框架提供的一种组件,用于在Flex客户端与服务器之间实现远程调用(RPC, Remote Procedure Call)。`RemoteObject` 可以方便地将Flex...

    flex中RemoteObject与java的通信

    ### Flex中RemoteObject与Java的通信 在Flex开发过程中,实现客户端与服务器端的数据交互是一项基本而又关键的任务。其中,`RemoteObject`是Adobe Flex框架提供的一个强大的组件,它允许Flex应用程序通过AMF...

    flex+java+remoteObject

    在Flex和Java的集成应用中,RemoteObject是关键的通信组件,它允许Flex客户端与Java后台服务进行数据交换。 RemoteObject是Flex框架中的一个关键组件,它通过AMF(Action Message Format)协议,提供了一种高效、轻...

    flex4使用RemoteObject学习

    RemoteObject是Flex提供的一种服务,它使得客户端与服务器端之间的通信变得简单,尤其是对于需要调用远程服务或业务对象的情况。 在Flex中,RemoteObject组件是实现AMF(Action Message Format)协议的关键。AMF是...

    flex remoteobject demo

    LCDS(LiveCycle Data Service)是由FDS(Flex Data Service)发展而来,通过LCDS与服务器端通信不但可以大大提高通信的效率,而且还能提供传统B/S结构没有的功能。由于目前LCDS只能通过war包的形式提供给服务端,...

    flex使用 RemoteObject 与java进行json格式的数据交互

    在Flex开发中,为了实现客户端(Flex应用)与服务器端(通常是Java应用)的数据交互,开发者经常使用`RemoteObject`组件。本篇文章将深入探讨如何使用`RemoteObject`与Java进行JSON格式的数据交换,以便更好地理解和...

    flex与java的通信 Blazeds remoteObject

    本篇将深入探讨Blazeds RemoteObject组件在Flex与Java集成中的作用、原理以及实践方法。 Blazeds全称为BlazeDS,它是一个开源项目,允许Flex客户端与Java服务器进行实时双向通信。Blazeds通过使用AMF(Action ...

    flex3(remoteobject+datagrid+.....)+java+oracle源代码

    在与Flex3的集成中,可能需要设计一套数据访问接口,使Flex客户端能通过RemoteObject调用这些接口来读取、更新和删除数据。 在实际项目中,"MANAGER"可能是一个目录或者文件,它可能包含了项目的管理相关的代码或者...

    red5中使用remoteObject

    RemoteObject是Adobe Flex框架中的一个特性,允许在客户端(如Flash Player)和服务器端之间进行透明的RPC(远程过程调用)通信。 在Flex应用中,RemoteObject是客户端与服务器交互的关键组件,它提供了与服务器...

    java 中Flex开发RemoteOject 配置详解

    在Java中进行Flex开发时,RemoteObject是一种关键的技术,它允许Flex客户端与后端服务器进行数据交换。本文将深入解析如何配置和使用Flex RemoteObject,以便在Java环境中实现高效的远程调用。 首先,理解Flex ...

    Flex 以Tomcat为服务器 通过RemoteObject 连接MySQL 随机取出单词的拼单词游戏

    首先,Flex中的RemoteObject是Flex与后端服务通信的一种方式,它允许开发者在Flex客户端与服务器之间传递数据和服务调用。在这个游戏里,RemoteObject被用来连接到运行在Tomcat上的后台服务,这可能是一个用Java编写...

Global site tag (gtag.js) - Google Analytics