- 浏览: 198870 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
hao3721:
dsfasd
ehcache 使用 -
nihaokid:
方法是不会存在在对象内存中的,它存在于方法区,建议看看jvm的 ...
Java 深层理解 父类引用指向子类对象 -
vissalan:
有一点没看明白Father f1 = (Father)s;这时 ...
Java 深层理解 父类引用指向子类对象 -
咖啡舞者:
非常感谢这种分享精神.
在BREW中实现自己的GUI(8)-IWEB的封装 -
咖啡舞者:
这是创建的代码。
在设备上调的。
界面在手机和模拟器上显示的差异
上篇中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 >
<?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 >
<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 >
<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
- }
- }
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;
- }
- }
- }
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;
- }
- }
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 >
<?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>
发表评论
-
LocalConnection使用
2012-06-01 12:22 1195转自:http://uh.9ria.com/space-446 ... -
为什么国内的公司都不敢使用Flex作为产品的平台与主要开发语言
2011-05-07 17:35 1492转http://www.k-zone.cn/zblog/pos ... -
再谈Flash Builder、Flash Catalyst与Flash Platform
2011-05-07 17:33 1305转http://www.k-zone.cn/zblog/pos ... -
有故事的网页设计——Flash网站奇妙之旅
2011-02-09 18:39 1085[转]有故 事的网页设 ... -
翻译:理解Flash Player 9垃圾回收机制,欢迎指正
2010-04-29 23:26 940关键字: flash player 原文 Und ... -
翻译:Flash Player 9资源管理策略,欢迎指正
2010-04-29 23:25 1082关键字: flash player 原 ... -
ActionScript 3.0 程序最佳写法(二)
2010-02-25 17:01 1936本文摘译自Sean Moore撰写 ... -
深入分析Flex [Bindable] 以及使用方法
2009-11-23 16:57 1085转自:http://gain-loss.org/? ... -
Flash Player 10 Debug Version And Other Version
2009-09-07 14:57 22291、Flash Player 10 (debugger ver ... -
FLASH + JAVA 开发实时网络游戏[编程基础篇] with Socket API
2009-05-15 13:39 2320[转帖]在MyEclipse6.0中安装FLEX插件的过程 ... -
FLASH + JAVA 开发实时网络游戏[编程基础篇] with Socket API
2009-05-15 13:36 1788FLASH + JAVA 开发实时网络游戏[编程基础篇] wi ... -
Flex 分页DataGrid
2009-03-16 16:04 1269Java代码 Local:Kelvin_LinkB ... -
Flex 开发学习笔记2 - 采用的架构 BlazeDS + Spring + Hibernate
2009-03-16 15:53 2047自己原来的项目架构是 WebWork2 + Spring + ...
相关推荐
标题中的“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) 解决方案,旨在实现前后端的数据交互和业务逻辑处理。 首先,你需要准备和...