加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex Spring整合

发布时间:2020-12-15 03:56:38 所属栏目:百科 来源:网络整理
导读:转自:http://www.iteye.com/topic/392836 内容如下 ? 关于Adobe Flex 关于Spring 为什么使用Flex和Spring Flex和Spring的整合 关于Flex Adobe Flex是一套创建富客户端应用(RIAs)的框架.Flex生成的swf文件可以直接运行在Flash Player之中。相比较基于时间轴

转自:http://www.iteye.com/topic/392836

内容如下

?

  • 关于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的服务。

所需要的开发环境如下
  • Eclipse3.4(J2EE版本):http://www.eclipse.org/downloads/
  • Flex Builder3:http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3email&sdid=EOZPI
  • Tomcat 6:http://tomcat.apache.org/
  • BlazeDS:http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/
  • Spring框架:http://www.springsource.org/download
  • Spring BlazeDS整合:http://www.springsource.org/spring-flex
  • ANTLR3.0:http://www.antlr.org/download.html
首先设置服务端的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之间传输
Java代码 ?

收藏代码

  1. public?class?MyEntity?{??
  2. ?private?String?frstName;??
  3. ?private?String?lastName;??
  4. ?private?String?emailAddress;??
  5. ???
  6. ?public?String?getFirstName()?{??
  7. ??return?frstName;??
  8. ?}??
  9. ?public?void?setFirstName(String?frstName)?{??
  10. ??this.frstName?=?frstName;??
  11. ?}??
  12. ?public?String?getLastName()?{??
  13. ??return?lastName;??
  14. ?}??
  15. ?public?void?setLastName(String?lastName)?{??
  16. ??this.lastName?=?lastName;??
  17. ?}??
  18. ?public?String?getEmailAddress()?{??
  19. ??return?emailAddress;??
  20. ?}??
  21. ?public?void?setEmailAddress(String?emailAddress)?{??
  22. ??this.emailAddress?=?emailAddress;??
  23. ?}??
  24. }??
?
Java服务接口
Java代码 ?

收藏代码

  1. import?java.util.List;??
  2. public?interface?MyService?{??
  3. ?public?List<MyEntity>?getMyEntities();??
  4. }??
?
Java服务的实现
Java代码 ?

收藏代码

  1. import?java.util.ArrayList;????
  2. import?java.util.List;????
  3. public?class?MyServiceImpl?implements?MyService?{????
  4. ?public?List<MyEntity>?getMyEntities()?{????
  5. ??List<MyEntity>?list?=?new?ArrayList<MyEntity>();????
  6. ??MyEntity?entity?=?new?MyEntity();????
  7. ??entity.setFirstName("Hello");????
  8. ??entity.setLastName("World");????
  9. ??entity.setEmailAddress("hello@world.com");????
  10. ??list.add(entity);????
  11. ??MyEntity?entity2?=?new?MyEntity();????
  12. ??entity2.setFirstName("Hello");????
  13. ??entity2.setLastName("Space");????
  14. ??entity2.setEmailAddress("hello@space.com");????
  15. ??list.add(entity2);????
  16. ??MyEntity?entity3?=?new?MyEntity();????
  17. ??entity3.setFirstName("Hello");????
  18. ??entity3.setLastName("Neighbor");????
  19. ??entity3.setEmailAddress("hello@neighbor.com");????
  20. ??list.add(entity3);????
  21. ??return?list;????
  22. ?}????
  23. }????
?

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

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

接下来我们要做Spring的配置了。
  • 把Spring的库以及Spring BlazeDS整合的库,还有ANTLR库文件放到项目/WEB-INF/lib下。
  • 创建一个Spring配置文件。鼠标右键点击WebContent/WEB-INF以及选择New>File,文件名输入application-config.xml.点击完成。配置文件内容如下。
Xml代码 ?

收藏代码

  1. <?xml?version="1.0"?encoding="UTF-8"?>????
  2. <beans?xmlns="http://www.springframework.org/schema/beans"????
  3. ?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"????
  4. ?xsi:schemaLocation="????
  5. ?http://www.springframework.org/schema/beans????
  6. ?http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">????
  7. ?<!--?Spring?Beans’s?-->????
  8. ?<bean?id="myService"?class="MyServiceImpl"?/>????
  9. </beans>????
?
懂Spring的人看这配置最熟悉不过了。。

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

为了配置Spring BlazeDS的整合,更新web.xml。
Xml代码 ?

收藏代码

  1. <?xml?version="1.0"?encoding="UTF-8"?>??
  2. <web-app?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"??
  3. ????xmlns="http://java.sun.com/xml/ns/javaee"?xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"??
  4. ????xsi:schemaLocation="http://java.sun.com/xml/ns/javaee?http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"??
  5. ????id="WebApp_ID"?version="2.5">??
  6. ????<display-name>test-server</display-name>??
  7. ????<servlet>??
  8. ????????<servlet-name>Spring?MVC?Dispatcher?Servlet</servlet-name>??
  9. ????????<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>??
  10. ????????<init-param>??
  11. ????????????<param-name>contextConfigLocation</param-name>??
  12. ????????????<param-value>/WEB-INF/application-config.xml</param-value>??
  13. ????????</init-param>??
  14. ????????<load-on-startup>1</load-on-startup>??
  15. ????</servlet>??
  16. ????<!--?Map?/spring/*?requests?to?the?DispatcherServlet?-->??
  17. ????<servlet-mapping>??
  18. ????????<servlet-name>Spring?MVC?Dispatcher?Servlet</servlet-name>??
  19. ????????<url-pattern>/spring/*</url-pattern>??
  20. ????</servlet-mapping>??
  21. </web-app>??
?
创建的Servlet可以处理这个请求,http://localhost:8080/test-server/spring
这是访问BlazeDS的基本的URL。当然这也是Spring标准的DispatcherServlet.

现在已经把Spring整合到Java web工程中了。要整合BlazeDS,就要修改下Spring的配置文件。
application-config.xml文件如下
Xml代码 ?

收藏代码

  1. <?xml?version="1.0"?encoding="UTF-8"?>??
  2. <beans?xmlns="http://www.springframework.org/schema/beans"??
  3. ?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"??
  4. ?xmlns:flex="http://www.springframework.org/schema/flex"??
  5. ?xsi:schemaLocation="??
  6. ?http://www.springframework.org/schema/beans??
  7. ?http://www.springframework.org/schema/beans/spring-beans-2.5.xsd??
  8. ?http://www.springframework.org/schema/flex??
  9. ?http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">????
  10. ?<!--?Spring?Beans’s?-->??
  11. ?<bean?id="myService"?class="MyServiceImpl"?/>??
  12. ?<!--?Simplest?possible?message?broker?-->???
  13. ?<flex:message-broker/>??
  14. ??<!--?exposes?myService?as?BlazeDS?destination?-->??
  15. ?<flex:remoting-destination?ref="myService"?/>??
  16. </beans>??
?
通过配置,使BlazeDS接口开放。首先要添加Flex的namespace。添加之后,使用message-broker标签创建MessageBrokerFactoryBean。看下配置只是个简单标签。配置是默认的。要确保WEB-INF/flex 下有service-config.xml这个配置文件。 remoting-destination标签使Spring bean变为远程目标。

接下来修改默认的BlazeDS service-config.xml文件。代码如下
Xml代码 ?

收藏代码

  1. <?xml?version="1.0"?encoding="UTF-8"?>??
  2. <services-config>??
  3. ????<services>??
  4. ????????<default-channels>??
  5. ????????????<channel?ref="my-amf"?/>??
  6. ????????</default-channels>??
  7. ????</services>??
  8. ????<channels>??
  9. ????????<channel-definition?id="my-amf"??
  10. ????????????class="mx.messaging.channels.AMFChannel">??
  11. ????????????<endpoint??
  12. ????????????????url="http://{server.name}:{server.port}/{context.root}/spring/messagebroker/amf"??
  13. ????????????????class="flex.messaging.endpoints.AMFEndpoint"?/>??
  14. ????????</channel-definition>??
  15. ????????<channel-definition?id="my-polling-amf"??
  16. ????????????class="mx.messaging.channels.AMFChannel">??
  17. ????????????<endpoint??
  18. ????????????????url="http://{server.name}:{server.port}/{context.root}/spring/messagebroker/amfpolling"??
  19. ????????????????class="flex.messaging.endpoints.AMFEndpoint"?/>??
  20. ????????????<properties>??
  21. ????????????????<polling-enabled>true</polling-enabled>??
  22. ????????????????<polling-interval-seconds>4</polling-interval-seconds>??
  23. ????????????</properties>??
  24. ????????</channel-definition>??
  25. ????</channels>??
  26. </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:workspacetest-serverWebContent
  • 点击Finish
工程创建完毕,我们会看到一个main.mxml的文件。修改代码如下
Xml代码 ?

收藏代码

  1. <?xml?version="1.0"?encoding="utf-8"?>??
  2. <mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml"???
  3. ????layout="absolute"???
  4. ????creationComplete="srv.getMyEntities()">??
  5. ????<mx:AMFChannel?id="myamf"?uri="/test-server/spring/messagebroker/amf"/>????
  6. ?<mx:ChannelSet?id="channelSet"?channels="{[myamf]}"/>????
  7. ?<mx:RemoteObject?id="srv"???
  8. ???destination="myService"?channelSet="{channelSet}"/>????
  9. ?<mx:DataGrid?dataProvider="{srv.getMyEntities.lastResult}"/>??
  10. </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
之后直接运行就可以了。整合完成。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读