`
风雪涟漪
  • 浏览: 508670 次
  • 性别: Icon_minigender_1
  • 来自: 大连->北京
博客专栏
952ab666-b589-3ca9-8be6-3772bb8d36d4
搜索引擎基础(Search...
浏览量:9069
Ae468720-c1b2-3218-bad0-65e2f3d5477e
SEO策略
浏览量:18484
社区版块
存档分类
最新评论

Flex Spring整合

阅读更多

内容如下

 

  • 关于Adobe Flex
  • 关于Spring
  • 为什么使用Flex和Spring
  • Flex和Spring的整合

关于Flex

Adobe Flex是一套创建富客户端应用(RIAs)的框架.Flex生成的swf文件可以直接运行在Flash Player之中。相比较基于时间轴的Flash开发,Flex框架更适合那些用传统方式开发应用程序的开发人员。Flex应用可以使用Flex builder来开发。这套IDE是基于Eclipse平台开发的。Action Script3语言是用来访问数据和创建用户接口组件的。Flex框架也用到了一种XML语言叫做MXML,它是用来简化Flex开发和布局的。

 

关于Spring

Spring是目前最受欢迎的创建企业级应用的Java框架。不像传统的J2EE开发,Spring提供了轻量级的容器。使用Spring会使应用的测试和开发更为简单。虽然Spring依赖注入的功能最出名,但是它也提供了其他服务端企业程序所需要的功能。如安全和事务处理。

 

为什么使用Flex和Spring

Flex技术本身和Java就有很强的关联性,它提供了一个基于Eclipse的IDE和BlazeDS.BlazeDS是个基于服务端的Java远程调用和Web消息的一个开源的技术。有许多应用都是以Java为后端处理的。Flex用于前端。由于Java和Flex一起频繁的使用。人们很容易就想到Flex和Spring的整合。有许多企业和组织已经着手开始使用Flex作为用户接口了。在2008年末,Spring社区已经着手Spring BlazeDS整合的项目。为Java和Spring添加更好的Flex支持。

 

默认的情况下BlazeDS创建了一个服务端Java对象的实例,用它们来完成远程对象的请求。但是这种方法并不适用于Spring.因为整个框架使用的服务的对象都是用Spring容器所创建的。Spring和BlazeDS的整合,Flex就可以使用Spring中的对象了。

 

整合Flex和Spring

为了使用BlazeDS,服务端的Java应用应打包为WAR文件。这部分的代码实例是使用Eclipse来创建和编辑的。步骤如下

 

  • 设置服务端的BlazeDS Java工程以及Spring框架。
  • 在BlazeDS中配置Spring的bean
  • 写一个Flex应用去使用Spring/BlazeDS的服务。

所需要的开发环境如下
首先设置服务端的JAVA工程,用blazeds.war(在blazeds的压缩包中)创建一个WEB工程。步骤如下
  • Choose File>import
  • 选择WAR选项。指定blazedsWAR文件的位置。输入工程名test-server
  • 点击完成
现在就可以创建一个服务器来运行这个WEB应用。
  • File>New>Other
  • 选择Server>Server
  • 点击Next
  • 选择Apache>Tomcat6 Server
  • 点击Next
  • 指定Tomcat的安装位置以及JRE(5以上版本)
  • 点击Next
  • 在Availble Projects list中选择test-server
  • 点击Add添加到Configured Project list
  • 点击Finish
接下来就可以创建Java类了。这个类在Java和Flex之间传输
public class MyEntity {
 private String frstName;
 private String lastName;
 private String emailAddress;
 
 public String getFirstName() {
  return frstName;
 }
 public void setFirstName(String frstName) {
  this.frstName = frstName;
 }
 public String getLastName() {
  return lastName;
 }
 public void setLastName(String lastName) {
  this.lastName = lastName;
 }
 public String getEmailAddress() {
  return emailAddress;
 }
 public void setEmailAddress(String emailAddress) {
  this.emailAddress = emailAddress;
 }
}
 
Java服务接口
import java.util.List;
public interface MyService {
 public List<MyEntity> getMyEntities();
}
 
Java服务的实现
import java.util.ArrayList;  
import java.util.List;  
public class MyServiceImpl implements MyService {  
 public List<MyEntity> getMyEntities() {  
  List<MyEntity> list = new ArrayList<MyEntity>();  
  MyEntity entity = new MyEntity();  
  entity.setFirstName("Hello");  
  entity.setLastName("World");  
  entity.setEmailAddress("hello@world.com");  
  list.add(entity);  
  MyEntity entity2 = new MyEntity();  
  entity2.setFirstName("Hello");  
  entity2.setLastName("Space");  
  entity2.setEmailAddress("hello@space.com");  
  list.add(entity2);  
  MyEntity entity3 = new MyEntity();  
  entity3.setFirstName("Hello");  
  entity3.setLastName("Neighbor");  
  entity3.setEmailAddress("hello@neighbor.com");  
  list.add(entity3);  
  return list;  
 }  
}  
 

这三个类对于例子足够了。在实战中,这个服务类可能要连接到数据库。为了方便我们学习,这个例子中就返回的是个list的硬编码了。

基本的java工程算是完工了。。

接下来我们要做Spring的配置了。
  • 把Spring的库以及Spring BlazeDS整合的库,还有ANTLR库文件放到项目/WEB-INF/lib下。
  • 创建一个Spring配置文件。鼠标右键点击WebContent/WEB-INF以及选择New>File,文件名输入application-config.xml.点击完成。配置文件内容如下。
<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
 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">  
 <!-- Spring Beans’s -->  
 <bean id="myService" class="MyServiceImpl" />  
</beans>  
 
懂Spring的人看这配置最熟悉不过了。。

通过这一步,已经有了一个BlazeDS默认配置的Java web工程。下面我们就更改BlazeDS默认配置,去使用新创建的Spring中的bean.

为了配置Spring BlazeDS的整合,更新web.xml。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>test-server</display-name>
	<servlet>
		<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/application-config.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<!-- Map /spring/* requests to the DispatcherServlet -->
	<servlet-mapping>
		<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
		<url-pattern>/spring/*</url-pattern>
	</servlet-mapping>
</web-app>
 
创建的Servlet可以处理这个请求,http://localhost:8080/test-server/spring
这是访问BlazeDS的基本的URL。当然这也是Spring标准的DispatcherServlet.

现在已经把Spring整合到Java web工程中了。要整合BlazeDS,就要修改下Spring的配置文件。
application-config.xml文件如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:flex="http://www.springframework.org/schema/flex"
 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">  
 <!-- Spring Beans’s -->
 <bean id="myService" class="MyServiceImpl" />
 <!-- Simplest possible message broker --> 
 <flex:message-broker/>
  <!-- exposes myService as BlazeDS destination -->
 <flex:remoting-destination ref="myService" />
</beans>
 
通过配置,使BlazeDS接口开放。首先要添加Flex的namespace。添加之后,使用message-broker标签创建MessageBrokerFactoryBean。看下配置只是个简单标签。配置是默认的。要确保WEB-INF/flex 下有service-config.xml这个配置文件。remoting-destination标签使Spring bean变为远程目标。

接下来修改默认的BlazeDS service-config.xml文件。代码如下
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
	<services>
		<default-channels>
			<channel ref="my-amf" />
		</default-channels>
	</services>
	<channels>
		<channel-definition id="my-amf"
			class="mx.messaging.channels.AMFChannel">
			<endpoint
				url="http://{server.name}:{server.port}/{context.root}/spring/messagebroker/amf"
				class="flex.messaging.endpoints.AMFEndpoint" />
		</channel-definition>
		<channel-definition id="my-polling-amf"
			class="mx.messaging.channels.AMFChannel">
			<endpoint
				url="http://{server.name}:{server.port}/{context.root}/spring/messagebroker/amfpolling"
				class="flex.messaging.endpoints.AMFEndpoint" />
			<properties>
				<polling-enabled>true</polling-enabled>
				<polling-interval-seconds>4</polling-interval-seconds>
			</properties>
		</channel-definition>
	</channels>
</services-config>
 
看一下 endpoint标签的的url.唯一可以修改的就是content.root之后的spring.所有远程目标配置都应该配置在application-config.xml文件中。

现在我们完成了Spring/BlazeDS Java应用。可以启动Tomcat来查看配置是否出错。

接下来我们就可以新建一个Flex来远程调用Spring服务。步骤如下
  • File>New>Other
  • 选择Flex Project
  • 填写工程名称test-flex
  • 用默认的地址
  • 选择Web application(运行在Flash player)
  • Application Type 选择None
  • 点击Next
  • 指定Output的文件夹。如   C:\workspace\test-server\WebContent\
  • 点击Finish
工程创建完毕,我们会看到一个main.mxml的文件。修改代码如下
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
	layout="absolute" 
	creationComplete="srv.getMyEntities()">
	<mx:AMFChannel id="myamf" uri="/test-server/spring/messagebroker/amf"/>  
 <mx:ChannelSet id="channelSet" channels="{[myamf]}"/>  
 <mx:RemoteObject id="srv" 
   destination="myService" channelSet="{channelSet}"/>  
 <mx:DataGrid dataProvider="{srv.getMyEntities.lastResult}"/>
</mx:Application>

 
以上代码的AMFChannel访问了Spring的服务。
要注意的是RemoteObject标签中的destination的destination要和spring的application-config.xml中remote-service标签的ref所设置的值保持一致。通过代码可以看出Flex并没有包含关于Spring的东西。编写Flex的
开发人员不必知道关于Spring的知识。

要更新test-server的程序。可以Refresh这个工程。

下面测试一下。启动Tomcat.http://localhost:8080/test-server/main.html


 

为了在Flex builder中调试运行。可以做如下设置

 

  • 右键点击test-flex工程。
  • 选择Properties,之后是Flex build path
  • Output Folder URL 填写  http://localhost:8080/test-server/
  • 点击OK
之后直接运行就可以了。整合完成。


 


 

  • 大小: 12.4 KB
分享到:
评论
16 楼 emilyHong 2010-05-05  
fordsupr 写道
版大,
请问
不知道是不是我的包不全?
myelipse下
application-config.xml文件在
<flex:message-broker/>还有<flex:remoting-destination ref="myService" /> 这两个地方出错??
感谢了~





我的也是这个错误,我想知道怎么能解决?
15 楼 mayufenga1 2010-03-19  
终于配出来了。最好把jar包说明下。。找了半天
14 楼 xiangkun 2009-11-22  
yexin218 写道
可惜我不會Spring,因為他那個xml配置文件蠻複雜的哦。
覺得FLex+blazeds+java的組合都不錯啊

其实Spring 用熟悉之后,配置文件也就那么点东西。。。不复杂!
13 楼 paramore 2009-08-17  
刚学习flex,谢谢分享
12 楼 bigeyex 2009-07-26  
嗯,这个和Dzone RefCards里面的说法几乎一致。不过改动了一些:
原文是<flex:remote-service ref="myService" />
这里是remoting-destination,大概是Spring BlazeDS Integration的版本不一样吧。
Refcardz里面的事1.0.0M2版的,和现在的Release版应该有不同。
现在的Release版我还没成功过,不知道楼主成功没有。
11 楼 taiwei 2009-07-10  
呵呵很不错的文章,对理解原理很有用。
实际工作中应该可以使用专门的工具,比如Spring BlazeDS Integration
10 楼 fordsupr 2009-07-06  
感谢 风雪涟漪版大。

原来是myeclipse的问题,改用myeclipse5.5就可以运行了
有用新版本的请参考http://forum.springsource.org/showthread.php?p=230188
9 楼 fordsupr 2009-07-06  
版大,
感谢您的佛心,造福我们这些新手~
我已经直接import整个project
不过,还是出现两个这个error
cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'flex:message-broker'.

cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'flex:remoting-destination'.
不好意思,打扰您这么多时间~
8 楼 风雪涟漪 2009-07-06  
完整代码如下 http://www.damipan.com/file/2PeENJR.html
7 楼 fordsupr 2009-07-06  
版大,
请问
不知道是不是我的包不全?
myelipse下
application-config.xml文件在
<flex:message-broker/>还有<flex:remoting-destination ref="myService" /> 这两个地方出错??
感谢了~
6 楼 leisure 2009-06-25  
恩 这个和网上流传的 方法有什么区别(不用第三方lib,不过有个SpringFactoty),
这个功能更强劲?
5 楼 yexin218 2009-06-23  
可惜我不會Spring,因為他那個xml配置文件蠻複雜的哦。
覺得FLex+blazeds+java的組合都不錯啊
4 楼 asklxf 2009-06-22  
http://www.adobe.com/devnet/livecycle/articles/blazeds_spring_print.html
3 楼 asklxf 2009-06-17  
flex和spring整合非常简单,我在adobe网站搜索到一个简单的教程,5分钟就搞定了,不需要任何第三方库。想不明白为啥要整一个spring-flex项目,完全没有必要,spring的配置文件本来就已经非常复杂了
2 楼 lydawen 2009-05-31  
pojo一般要实现序列化接口吧?
1 楼 momoko8443 2009-05-21  
写的很详细,表扬一下

相关推荐

    FlexSpring jar包

    FlexSpring jar包是针对Flex和Spring框架集成使用的一个关键组件,它使得基于Adobe Flex的前端应用能够无缝地与Spring框架的后端服务进行交互。在本文中,我们将深入探讨Flex和Spring框架的基本概念,FlexSpring集成...

    Flex 与 Spring整合

    Flex与Spring整合是将Adobe Flex前端技术和Spring后端框架相结合,实现富互联网应用程序(Rich Internet Applications,RIA)的开发。这种结合使得开发者可以利用Flex的交互性和表现力,以及Spring的强大企业服务...

    flex+spring flex整合

    将Flex与Spring整合,可以充分利用两者的优点,构建出既美观又稳定的应用程序。 **BlazeDS 和 Spring BlazeDS Integration** 整合Flex和Spring的关键在于让Flex客户端能够方便地访问Spring管理的Bean,而BlazeDS和...

    Spring 整合 Flex 包

    Spring 整合 Flex 是一种将 Adobe Flex 前端技术和 Spring 框架后端服务进行集成的方法,目的是为了创建富互联网应用程序(Rich Internet Applications,RIA)。Spring Flex 提供了全面的支持,使得 Flex 应用程序...

    flex整合spring需要的spring相关包

    在整合Flex和Spring时,关键在于如何使Flex客户端能够与Spring服务端进行通信。以下是一些核心知识点: 1. **AMF通信协议**:Adobe Message Format (AMF) 是Flex与服务器之间进行数据交换的高效二进制格式。Spring ...

    Flex Spring JAVA BLAZEDS整合

    【Flex Spring JAVA BLAZEDS整合】是一种技术实践,它将Adobe Flex的前端展示层与Spring框架的后端业务逻辑层紧密结合,利用BlazeDS作为中间件进行数据传输。Flex作为一个强大的RIA(富互联网应用程序)开发平台,常...

    Flex4 spring整合实例

    在本整合实例中,我们将探讨如何将Adobe Flex4与Spring框架无缝集成,以实现更高效、更灵活的应用开发。 Flex4是Adobe Flex SDK的一个版本,它提供了强大的用户界面组件和动画效果,以及ActionScript 3.0编程语言的...

    spring 整合flex,整合webService

    总结来说,Spring整合Flex和WebServices,实现了前后端分离的架构,使服务器端的复杂业务逻辑与客户端的富用户体验完美结合。通过Spring的灵活配置和Flex的动态展示,我们可以构建出高效、健壮且用户友好的企业级...

    hibernate+flex+spring 整合,hibernate+flex+spring 集成

    在IT行业中,整合Hibernate、Flex和Spring框架是一个常见的任务,以构建高效、用户交互性强的Web应用程序。这个组合允许开发者利用Hibernate的ORM能力处理数据库操作,Flex的富互联网应用程序(RIA)界面,以及...

    Flex-Spring-JAVA-BLAZEDS.rar_Flex spring_flex_flex java

    描述中的“Flex Spring JAVA BLAZEDS整合,永固整合将flex与Spring整合”表明这个压缩包文件包含了如何将这三者结合在一起的教程或指南。这种整合允许开发者利用Flex的富客户端能力,Spring的后端服务管理,以及...

    上一篇的flex的远程对象调用,flex和spring集成分页的jar和截图

    描述中提到的“flex和spring集成分页”是指将Flex客户端与Spring框架结合,实现服务器端数据的分页展示。Spring是一个广泛使用的Java企业级应用开发框架,提供IoC(Inversion of Control)容器、数据访问、事务管理...

    flex spring

    Flex Spring Ibatis 整合详解 在开发Java Web应用程序时,使用Spring框架作为基础架构,Ibatis作为持久层解决方案,而Flex作为前端展示技术,能够构建出高效、灵活且易于维护的应用。本篇文章将深入探讨如何将这三...

    flexspring

    FlexSpring 是一个专门为Java开发者设计的库,它简化了在Flex客户端与Spring后端之间的集成工作。这个封装库使得在富互联网应用(RIA)中利用Spring框架的强大功能变得更加容易。Flex,作为Adobe的一款用于构建RIA的...

    flex整合spring的例子

    Flex与Spring的整合是将富客户端(Flex)与企业级后端服务(Spring)结合,以实现更高效、更灵活的Web应用开发。这个例子旨在展示如何在Flex前端与Spring后端之间建立通信,以便利用Spring框架的强大功能,如依赖...

    spring整合Flex

    Spring整合Flex是一个将Adobe Flex前端UI技术与Spring后端服务框架结合的应用开发实践。这个小例子展示了如何在项目中有效地集成这两种技术,提供一个交互性强、用户体验良好的RIA(Rich Internet Applications)...

    Spring Flex 整合

    **Spring Flex 整合** Spring框架是Java领域中广泛使用的轻量级应用框架,而Flex是一种用于构建富互联网应用程序(RIA)的技术,基于Adobe Flash Player或Adobe AIR运行时。Spring Flex整合是将Spring的服务器端...

    Spring整合flex-Spring BlazeDS Integration-带项目demo

    Spring整合Flex是一个重要的技术主题,尤其对于构建富互联网应用程序(RIA)时。Spring BlazeDS Integration是Spring框架的一个组件,它提供了与Adobe Flex的无缝集成,允许后端Java服务与前端Flex客户端进行通信。...

    Pro Flex on Spring

    集成部分,作者详细解释了如何配置Spring项目以支持Flex请求,包括设置BlazeDS或LCDS(LiveCycle Data Services)来处理AMF数据交换。AMF是一种二进制格式,比HTTP或JSON更高效,适用于大量数据的传输。通过这些...

    flex 整合java spring

    标题中的“flex 整合java spring”指的是在Java Spring框架中集成Adobe Flex技术,以便创建富互联网应用程序(RIA)。Flex是一种用于构建具有交互性和动态图形的Web应用的开源框架,而Spring是Java企业级应用开发的...

    spring整合flex所需jar包

    - Spring-BlazeDS Integration:这是一个Spring项目,它提供了与BlazeDS的集成,使得配置Spring服务为Flex客户端可用变得更加简单。 - Proxy服务:在Spring中定义Proxy服务,这些服务会被BlazeDS暴露,供Flex...

Global site tag (gtag.js) - Google Analytics