- 浏览: 22311 次
- 性别:
- 来自: 苏州
文章分类
最新评论
关于Flex的整合问题,做一个配置简介,另外对容易出错的地方跟大家说说
如果有错误,感谢大家指正。
(开始之前,我必须承认,题目是个噱头,只要有Spring这个超强粘合剂,多个框架可以很容易整合。)
如果是熟悉Spring MVC则完全不需要使用Struts2,这里为了先前项目的表现层可以平滑过度到Flex,才沿用了Struts2
另外,这里主要讲讲Flex怎么与Spring整合,至于Spring与其他框架整合,不在文章内
1.假定你已经配置好web应用并且增加了BlazeDS和导入spring-flex包(使用到的包会在文章最后展示)
配置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>flexweb</display-name>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:applicationContext.xml</param-value>
- </context-param>
- <!-- The filter for struts2 -->
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>
- org.apache.struts2.dispatcher.FilterDispatcher
- </filter-class>
- </filter>
- <listener>
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- <!-- Http Flex Session attribute and binding listener support -->
- <!--
- <listener>
- <listener-class>flex.messaging.HttpFlexSession</listener-class>
- </listener>
- -->
- <!-- MessageBroker Servlet 单独为Flex配置xml-->
- <servlet>
- <servlet-name>flex</servlet-name>
- <servlet-class>
- org.springframework.web.servlet.DispatcherServlet
- </servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>
- /WEB-INF/classes/flex-application-config.xml
- </param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <!-- The filter mapping for struts2 -->
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <!--
- Map all /messagbroker requests to the DispatcherServlet for handling
- -->
- <servlet-mapping>
- <servlet-name>flex</servlet-name>
- <url-pattern>/messagebroker/*</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
以上内容实质上是两个Web Framework,一个是Struts2(标记名为struts2),一个是Spring MVC(标记名为flex)
这里Spring MVC为flex的RemotingObject提供映射和Flex与Server通讯MessageBroker类
配置flex-application-config.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <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">
- <flex:message-broker/>
大家注意到,标签引入http://www.springframework.org/schema/flex/spring-flex-1.0.xsd文件,便可以使用<flex:message-broker/> 标记了。
但是这样写虽然简便,但在初学的时候,还是最好理解它的机制吧
以上的内容可以改写成:
(转载请注明出处:[url=http://www.live588.org]淘金盈[/url] [url=http://www.tswa.org]博彩通[/url] [url=http://www.nsdm.org]澳门博彩[/url] [url=http://www.lixx.org]博彩网[/url][url=http://www.uvip.org]e世博[/url][url=http://www.10086money.com]时尚资讯[/url][url=http://262002954-qq-com.iteye.com]flex[/url][url=http://flexflex.iteye.com]flex[/url])
- <?xml version="1.0" encoding="UTF-8"?>
- <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
- <bean id="_messageBroker"
- class="org.springframework.flex.core.MessageBrokerFactoryBean">
- <property name="servicesConfigPath">
- <value>/WEB-INF/flex/services-config.xml</value>
- </property>
- </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>
- <!-- Dispatches requests mapped to a MessageBroker -->
- <bean
- class="org.springframework.flex.servlet.MessageBrokerHandlerAdapter" />
大家注意:
“http://www.springframework.org/schema/flex
http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">内容被移除”
完全是一个标准的Spring配置文件了。
这里把之前web.xml的/messagebroker/*映射完全对应到/*=_messageBroker,也就是
org.springframework.flex.core.MessageBrokerFactoryBean类中,生成MessageBroker,而MessageBroker是Flex与Server通信的关键
而MessageBrokerHandlerAdapter适配器会取得MessageBroker的实例,使用endpoint = broker.getEndpoint(endpointPath, contextPath);取得端点
endpoint.service(request, response);发送
如果你熟悉Spring MVC,请原谅我又唠叨一遍- -#
现在通讯问题完毕,那么远程调用呢?
我们接着来:
定义一个java类:
- package example.fx;
- public class DataBean {
- private String name = "";
- private String params = "";
- public String getName() {
- return this.getClass().getName()+ " : " +name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getParams() {
- return params;
- }
- public void setParams(String params) {
- this.params = params;
- }
- }
在flex-application-config.xml中,增加:
当然,你也可以写到Spring的其他配置文件中,例如本文中Spring管理Struts2的那个applicationContext.xml(参照web.xml)
- <bean id="dataBean" class="example.fx.DataBean">
- <property name="params">
- <value>Hello Flex!!!</value>
- </property>
- </bean>
这里只生成了一dataBean的实例,但是前段Flex如何访问呢?
在在flex-application-config.xml中继续增加
- <flex:remoting-destination ref="dataBean" />
这里又是图开发速度,然而这部分可以有如下三种写法,分别是:
a.
- <bean id="dataBean" class="example.fx.DataBean">
- <property name="params">
- <value>Hello Flex!!!</value>
- </property>
- <flex:remoting-destination />
- </bean>
b.
- <flex:remoting-destination ref="dataBean"
- include-methods="read, update" exclude-methods="create, delete"
- channels="my-amf, my-secure-amf" />
c.
- <bean id="product"
- class="org.springframework.flex.remoting.RemotingDestinationExporter">
- <property name="messageBroker" ref="_messageBroker" />
- <property name="service" ref="dataBean" />
- <property name="destinationId" value="dataBean" />
- <property name="includeMethods" value="read, update" />
- <property name="excludeMethods" value="create, delete" />
- <property name="channels" value="my-amf, my-secure-amf" />
- </bean>
当然,dataBean中并没有read, update, create, delete方法,这里只是演示用.
经过这么多繁琐的过程,终于Flex可以访问到Server的java类了。
我们新建一个MXML 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.FaultEvent;
- import mx.rpc.events.ResultEvent;
- private function onResultHandler(event:ResultEvent):void{
- Alert.show(String(event.result), String(example.data));
- }
- private function onFaultHandler(event:FaultEvent):void{
- Alert.show(String(event.fault), "Fault!");
- }
- private function btn_Click1EventHandler(event:MouseEvent):void{
- dbRemote.getName();
- }
- private function btn_Click1EventHandler(event:MouseEvent):void{
- dbRemote.getParams();
- }
- ]]>
- </mx:Script>
- <mx:RemoteObject id="dbRemote" destination="dataBean" endpoint="http://localhost:8080/flexweb/messagebroker/amf" result="onResultHandler(event)" fault="onFaultHandler(event)">
- </mx:RemoteObject>
- <mx:Button x="10" id="btn_Click1" label="RemoteClass->getName" click="btn_Click1EventHandler(event)"/>
- <mx:Button x="80" id="btn_Click2" label="RemoteClass->getParams" click="btn_Click2EventHandler(event)"/>
- </mx:Application>
服务器启动后,运行你的MXML Application,点击Flash上的两个按钮,看看结果吧
如果你跟我一样懒
那么配置一下Struts,在URL敲一下地址,不用每次都运行你的MXML文件,特别是为了安全起见,你把MXML文件编译到web/WEB-INF/下的时候
以下是struts.xml
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <package name="default" namespace="" extends="struts-default">
- <action name="*" class="com.opensymphony.xwork2.ActionSupport">
- <result name="success">/WEB-INF/page/flex/{1}.swf</result>
- </action>
- </package>
- </struts>
有几点说明:
1.flex的四个配置文件完全没有更改,并且使用默认channel.
2.有文章说,在remoting-service配置远程访问
比如:
- <?xml version="1.0" encoding="UTF-8"?>
- <service id="remoting-service"
- class="flex.messaging.services.RemotingService">
- <adapters>
- <adapter-definition id="java-object"
- class="flex.messaging.services.remoting.adapters.JavaAdapter"
- default="true" />
- </adapters>
- <default-channels>
- <channel ref="my-amf" />
- </default-channels>
- <!-- 远程调用 -->
- <destination id="dataBean">
- <properties>
- <source>example.fx.DataBean</source>
- </properties>
- </destination>
- </service>
这种方式和在文章中的flex-application-config.xml配置的
<flex:remoting-destination ref="dataBean" /> 是一致的,也就是说,如果你在remoting-service配置了,就不需要在Spring配置文件中,反之亦然,如果你在remoting-service和flex-application-config.xml都配置了,web服务器启动的时候会抛异常,提示你bean id已经注册.
3.有不少文章中,MXML中RomoteObject是这样配置的
- <mx:AMFChannel id="myamf" uri="http://localhost:8080/flexweb/messagebroker/amf"/>
- <mx:ChannelSet id="channelSet" channels="{[myamf]}"/>
- <mx:RemoteObject id="dBean"
- destination="dataBean" channelSet="{channelSet}" result="onResultHandler(event)" fault="onFaultHandler(event)"/>
如果使用默认配置,即remoting-service.xml文件中会有一个默认channel配置,这样写是完全没有必要的,你只需要在
- <mx:RemoteObject id="dbRemote" destination="dataBean" endpoint="http://localhost:8080/flexweb/messagebroker/amf"/>
定义一个server的端点
上面的写法这相当于你另外写了一个AMFChannel,并且使用管道去接(ChannelSet里可以放很多channel)
jar包:
Spring 使用Spring 3.0.0.M2
Struts 使用Struts 2.0.4
Flex 使用默认BlazeDS包和org.springframework.flex-1.0.0.RC2.jar包
稍后设置一下下载地址
----------------------------------------------------------------
BlazeDS:
http://opensource.adobe.com/wiki/display/blazeds/Release+Builds
org.springframework.flex-1.0.0.RC2.jar:
或http://dl.iteye.com/topics/download/6ba351cc-035b-39a4-b304-cca3e3bc6c50
相关推荐
flex与+struts2+hibernate+spring集成实例项目,源码奉献,物有所值
标题和描述中提到的"lib1 flex+struts2+spring+ibatis jar 完整的jar 需要下载本人资源lib2"是一个关于Java Web开发中的关键库集合,这些库是构建基于Flex前端、Struts2作为MVC框架、Spring作为依赖注入和整体应用...
在IT行业中,构建高效、可扩展的企业级应用是至关重要的,而"flex4+spring3+struts2+hibernate3+blazeds整合实例"是一个典型的Java Web开发架构,它结合了前端的Flex技术和后端的SSH(Spring、Struts2、Hibernate)...
在Flex项目中,创建一个HTTPService实例,指定URL以指向Struts2的Action。设置方法为POST或GET,根据实际需求选择。 2. **创建Struts2 Action**: 在Struts2的后台,创建一个Action类,该类将处理来自Flex的请求...
本项目“flex与struts2与hibernate与spring集成实例项目”就是一个典型的案例,它整合了四个关键的技术:Flex前端展示、Struts2作为MVC框架、Hibernate作为持久层框架以及Spring作为依赖注入和整体应用管理框架。...
1. **Struts2与Spring的整合**:本项目中,Struts2的动作类(Action)被托管于Spring容器,这意味着Action类作为Spring的bean管理,可以利用Spring的依赖注入来获取其他服务。这样做的好处是可以更好地控制对象生命...
本系统“UserInfoSys”便是一个典型的实例,它利用Adobe Flex作为前端展示层,与Apache Struts2作为后端控制层进行深度整合,实现了高效、用户友好的信息管理系统。下面我们将详细探讨Flex与Struts2的结合以及它们在...
如果你的项目中还需要使用SSH(Spring、Struts和Hibernate)框架,那么在`WebContent/WEB-INF`目录下添加对应的配置文件(如`struts-config.xml`, `spring-servlet.xml`等),并把SSH所需的JAR库添加到`WebContent/...
分享:Flex4+Struts2+Spring3+Blazeds 百度空间_应用平台 Flex中嵌入Google地图 - 菩提树 - ITeye技术网站 分享:Flex builder3执行Debug需要安装的Flash Player Debugger环境 百度空间_应用平台 flex4 的DataGrid...
@framework Spring2.5框架 + Struts2 + IBatis2 +Flex4.6 +JSP @remark J2EE企业级系统架构开发平台 @author TanLiang @version Ver 1.3 以下为此系统框开发的实例产品,此产品为真实物业公司应用管理系统。 此...
里面含有 blazeds.war包 以及相关教程,和一个 flex3跟struts2.16+hibernate3.25+spring2.5组合的实例和相应数据库,不过里面没有jar包,如有需要,可以向我要 QQ 826785300
在本实例中,我们将探讨如何将Flex前端与SSH后端进行有效整合,以实现高效的数据交互和功能丰富的Web应用。 首先,让我们深入理解Flex的核心概念。Flex使用MXML和ActionScript来创建用户界面,MXML是一种声明式语言...
1. 创建Java后端服务:使用Java开发Web服务,例如使用Spring MVC或Struts2框架创建RESTful API。 2. 配置Flex与Java通信:Flex应用可以通过HTTPService或WebService组件与Java后端进行数据交换。需要在Flex项目中...
2. **松散耦合集成**:Flex+Blazeds架构可以轻松地与现有的系统进行集成,不论后者使用的是哪种框架,如Struts或Spring等,都能够实现平滑过渡。 3. **现有系统的升级价值**:即使已经存在使用其他技术栈构建的应用...
通常,Java Web应用会使用Spring MVC或Struts等框架来组织和管理控制器、模型和服务。Java后端负责与数据库交互,执行CRUD操作,然后通过HTTP服务(如SOAP或RESTful)与Flex客户端通信。 3. BlazeDS或LiveCycle ...
Flex4和Java结合是开发富互联网应用程序(RIA)时常用的一种技术组合。Flex4是Adobe AIR框架的一部分,用于创建交互式、图形丰富的用户界面,而Java则提供了强大的后端服务处理能力。本实例将深入探讨如何将这两种...
首先,MyEclipse是基于Eclipse的Java EE集成开发环境,特别适合开发Web应用程序,包括Java、JSP、Servlet、Struts、Spring等。在8.5版本中,它已经支持了Flex项目开发,使得能够无缝地将ActionScript和Flex应用与...
8. **论坛系统(Struts 2+Hibernate+Spring实现)**:这是一个基于MVC(Model-View-Controller)架构的Web应用,使用了Struts 2作为控制器,Hibernate进行对象关系映射,Spring提供依赖注入和事务管理。这种组合能...
SSH在这里并非指Secure Shell协议,而是Spring、Hibernate和Struts这三种开源Java框架的组合,它们共同构成了SSH框架,是开发Java Web应用程序的常用工具。 1. Spring框架:Spring是一个全面的Java应用程序框架,...