上一篇“Flex 开发学习笔记1 - 与Flex的亲密接触,秀一下两周的成果”
上篇中show了一下近期作的demo页面,现在讲一讲我使用的架构:
自己原来的项目架构是 WebWork2 + Spring + Hibernate,现在通过FLex替代了WebWrok2来表显视图层,而Flex与Spring通讯采用了BlazeDS这个开源免费的Flex服务程序。
BlazeDS是Adobe公司发布的免费开源产品,与该公司的另一款收费产品LCDS功能相近,应该是LCDS简化开源免费版。目前我通过RemoteObject的方式访问后台Service感觉比较方便。BlazeDS下载地址:http://opensource.adobe.com/wiki/display/blazeds/download+blazeds+3
如何通过RemoteObject访问Spring管理的Bean,我参照另一篇教程文档进行了设计与开发,在这篇文章中,用的是Adobe非免费Flex服务程序,只需要将LCDS中的flex.war换成BlazeDS中的flex.war就可以了。另外,这里有一篇“使用BlazeDS实现Java和Flex通信 ”的文章,讲解了如何在eclipse中配置Flex工程。
以下是一个Flex页面访问RemoteObject的代码:
<?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.ResultEvent;
import mx.controls.Alert;
private function callRO(str:String):void{
Alert.show("flexSpringBeanTest");
firstRO.say(str);
firstRO.addEventListener(ResultEvent.RESULT,getROResult);
}
private function getROResult(e:ResultEvent) :void {
Alert.show(e.result.toString());
}
//flexObjectTest
]]>
</mx:Script>
<mx:RemoteObject id="firstRO" destination="flexSpringBeanTest"/>
<mx:TextInput x="109" y="28" id="input" text="hello!"/>
<mx:Button x="270" y="28" click="callRO(input.text)" label="请求"/>
</mx:Application>
在remote-config.xml配置里,映射一个Spring管理的Bean是这么写的
<destination id="flexSpringBeanTest">
<properties>
<factory>springFactory</factory>
<source>flexObjectTest</source>
</properties>
</destination>
在services-config.xml配置自定义的SpringFactory类,即我们要实现从从spring容器中去取得bean。
<factories>
<factory id="springFactory" class="cn.org.coral.core.flex.factory.FlexSpringFactory" />
</factories>
这个工厂类的定义:
package cn.org.coral.core.flex.factory;
import flex.messaging.FactoryInstance;
import flex.messaging.FlexFactory;
import flex.messaging.config.ConfigMap;
/**
* 要对某个java类实现自己定义的切入,可以使用工厂配置,需要在ro访问前,从spring里去getbean<br>
*
* @author Libin
*
*/
public class FlexSpringFactory implements FlexFactory{
@Override
public FactoryInstance createFactoryInstance(String id, ConfigMap properties){
SpringFactoryInstance instance = new SpringFactoryInstance(this, id, properties);
instance.setSource(properties.getPropertyAsString(SOURCE, instance.getId()));
return instance;
}
@Override
public Object lookup(FactoryInstance inst) {
SpringFactoryInstance factoryInstance = (SpringFactoryInstance) inst;
return factoryInstance.lookup();
}
@Override
public void initialize(String arg0, ConfigMap arg1) {
// TODO Auto-generated method stub
}
}
该factory需要实现FlexFactory接口。实现createFactoryInstance方法和lookup方法
package cn.org.coral.core.flex.factory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import flex.messaging.FactoryInstance;
import flex.messaging.config.ConfigMap;
import flex.messaging.services.ServiceException;
public class SpringFactoryInstance extends FactoryInstance
{
SpringFactoryInstance(FlexSpringFactory factory, String id, ConfigMap properties)
{
super(factory, id, properties);
}
public Object lookup()
{
//这就是从spring容器中getbean了
ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(flex.messaging.FlexContext.getServletConfig().getServletContext());
String beanName = getSource();
try
{
return appContext.getBean(beanName);
}
catch (NoSuchBeanDefinitionException nexc)
{
ServiceException e = new ServiceException();
throw e;
}
catch (BeansException bexc)
{
ServiceException e = new ServiceException();
throw e;
}
}
}
后台service的定义:
package cn.org.coral.sample.flex.manager;
public class FlexObjectTest {
public String say(String str){
return "say : " + str;
}
}
spring-context.xml的配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="flexObjectTest"
class="cn.org.coral.sample.flex.manager.FlexObjectTest">
</bean>
</beans>
分享到:
相关推荐
标题中的“PureMVC+Flex+BlazeDS+Spring+Hibernate.doc”指的是一项整合了多种技术的Web应用开发方案,这些技术包括PureMVC、Flex、BlazeDS、Spring和Hibernate。这篇文档可能是指导读者如何将这些技术结合在一起...
【标题】"Flex4.X+BlazeDS+Spring3实战开发在线书店四"涉及的核心技术栈是Adobe Flex 4.6、BlazeDS、Spring 3框架以及Java相关的JPA和Hibernate,配合MySQL数据库实现一个在线书店的完整系统。下面将详细阐述这些...
综上所述,这个在线书店的开发实例结合了Flex 4.6的富用户体验、BlazeDS的数据通信能力、Spring 3的依赖注入和业务管理、JPA的持久化机制以及Hibernate和MySQL的数据库支持。通过学习和实践这个项目,你将能够掌握...
使用flex 4.5 + Spring 3.0 + Hibernate 3.3 + Cairngorm 2.2.1 + BlazeDS 3.3.0 + Spring BlazeDS Integration 1.0.3整合出的一个登录的小demo·
Spring侦听配置模式**\n\n这种方式的主要优点在于,它允许一个应用处理多种类型的请求,并且能够无缝地融入到已有的Struts2+Spring2项目中,保持Struts2的MVC架构,同时利用Spring的DispatcherServlet来增强Flex的...
《Flex4.X+BlazeDS+Spring3 实战开发在线书店》是一门深入探讨使用Adobe Flex 4.6、BlazeDS、Spring 3框架以及Java相关技术进行Web应用程序开发的课程。这门课程旨在帮助开发者掌握如何构建功能丰富的、交互性强的...
标题“flex+blazeds+spring”表明我们要探讨的是如何将Flex前端与BlazeDS中继层和Spring后端框架结合起来,实现完整的数据交互和应用程序逻辑。 在Flex与Spring集成的环境中,Flex作为用户界面展示层,负责与用户...
Flex+BlazeDS+Spring+Hibernate 是一个经典的前端与后端集成方案,广泛应用于构建富互联网应用程序(Rich Internet Applications,RIA)。在这个框架组合中,Flex 作为用户界面层,提供了丰富的交互体验;BlazeDS ...
Myeclipse6.5+flex3+Blazeds+spring+hibernate完美整合,写的非常详细
根据提供的文件信息,本文将详细介绍如何一步步搭建PureMVC+Flex+BlazeDS+Spring+Hibernate的技术栈。这个过程涉及到了多个技术领域的整合,包括前端的Flex开发、后端的Java开发以及数据库交互等多个方面。 ### 一...
标题中的“PureMVC+Flex+BlazeDS+Spring+Hibernate”是一个常见的技术栈组合,用于构建企业级的 Rich Internet Applications (RIA)。这个技术栈包括前端开发框架、后端服务通讯、应用服务器、服务端架构和数据持久化...
通过以上步骤,我们可以构建出一个高效、可维护的Flex应用开发框架,利用Flash Builder 4的便捷,结合BlazeDS、Spring和Hibernate的强大功能,以及Cairngorm的架构指导,为Web应用开发带来更高的生产力和用户体验。...
一个 Flex+J2EE实例(cairngorm+blazeDS+hibernate+spring) 本实例为一个 flex 与 java通信项目。前端采用cairngorm框架,后台 采用hibernate+spring 每个部署 步骤,附详细 图文解释。旨在 采用 一种快速开发 ...
Flex4、BlazeDS、Spring和Hibernate是四个在IT领域中关键的技术组件,它们分别代表了富互联网应用程序(RIA)的开发、实时数据传输、依赖注入和持久化框架。这篇源码整合旨在展示如何将这些技术有效地融合在一起,...
### Flex4+BlazeDS+Spring+iBatis 开发教程详解 #### 一、富互联网应用(RIA)概念与背景 ##### RIA定义 富互联网应用(Rich Internet Application,简称RIA)是一种新兴的应用程序形式,它结合了客户端与服务器端...
Flex+Gilead+BlazeDS+Spring+Hibernate示例Demo,使用1:n和m:n两个双向关系,很好的演示了Gilead的Hibernate Lazy Killer特性,借助Gilead可以有效规避DTO模式的大量繁琐代码。效果图展示地址:...
这种架构使得开发人员可以充分利用Flex的富客户端能力,同时利用Spring和Hibernate的强大功能处理业务逻辑和数据库操作。源码包中的内容可能包含了完整的配置文件、jar包和示例代码,为初学者提供了实践和学习的资源...
为了搭建一个基于PureMVC、Flex、BlazeDS、Spring和Hibernate的项目,我们需要遵循一系列详细的步骤,这些步骤涉及到安装和配置不同的软件组件、创建项目以及集成各个框架。下面是这个过程的知识点总结: 一、软件...
本文将带你逐步构建一个基于PureMVC、Flex、BlazeDS、Spring和Hibernate的完整应用程序。这是一个典型的 Rich Internet Application (RIA) 解决方案,旨在实现前后端的数据交互和业务逻辑处理。 首先,你需要准备和...