时间:2022-07-29 05:09:43
摘要:传统的JAVA EE应用程序使用采用某种MVC框架作为前端用户界面,随着技术的发展,使用者对用户体验方面有了更高的要求,Flex作为富客户端技术在web技术中的应用,在一定程度上提升了用户交互性和用户体验度,为使用者提供了更酷的界面,更短的响应时间及接近于桌面程序的体验。本文主要讨论如何将FLEX技术集成至一个现有的基于Spring的JAVA EE应用程序中,阐述了Flex技术在JAVA EE应用程序中的实现解决方案。
关键词:JAVA EE;Flex;web应用程序;开发框架
中图分类号:TP311.52 文献标识码:A 文章编号:1007-9599 (2012) 17-0000-02
1 引言
Flex 是一个高效、免费的开源框架,可用于构建具有表现力的 Web 应用程序,这些应用程序利用 Adobe Flash Player和 Adobe AIR, 运行时跨浏览器、桌面和操作系统实现一致的部署。Java EE是基于组件模型的、分层的、可用于分布式环境下的开发与部署企业级应用程序的一系列服务和规范的集合。本文结合已有的基于Spring的Java EE框架应用程序的基础上,对flex开发环境进行配置,使用flex进行程序开发。
2 JAVA EE应用程序加入Flex支持
现有一个现有的JAVA EE应用程序,程序结构如图1所示
此web应用程序是典型的JAVA EE应用的程序。传统程序交互界面一般采用HTML的形式,用户在进行操作时,每次点击相应该的链接都需要重新的刷新界面。如采用Flex作为与用户交互的界面,将会给用户带来更好的体验。
本文以系统中权限管理模块中的“资源查询”为例,对现有的框架整合flex应用进行阐述。
2.1 SSH框架概述
如图1中所示,按照分层架构的形式对资源进行划分, action包中存放控制器类,service中存放业务接口类,在impl中存放业务实现类,utils包中存放实用程序类,在vo包中存放实体类;其中,applicationContext-dao.xml为spring的配置文件,struts.xml为struts2的配置文件。
2.2 集成Blazeds
Flex所负责的为表现层的内容,只接收java返回的数据,本文采用Adobe公司的开源项目Blazeds作为程序通讯的接口。Blazeds是一个基于服务器的 Java 远程控制和 Web 消息传递技术。
将BlazeDS 所需的 jar 包放至web项目的 /WEB-INF/lib/下。BlazeDS需要的jar包包括:
backport-util-concurrent.jar
commons-httpclient.jar
commons-logging.jar
flex-messaging-common.jar
flex-messaging-core.jar
flex-messaging-proxy.jar
flex-messaging-remoting.jar
2.3 web.xml配置支持flex
在web.xml中添加HttpFlexSession和Servlet 映射。HttpFlexSession 是 BlazeDS 提供的一个 Listener,负责监听 Flex 远程调用请求,并进行一些初始化设置:
flex.messaging.HttpFlexSession
MessageBrokerServlet 是真正处理 Flex 远程调用请求的 Servlet,我们需要将其映射到指定的URL:
messageBroker flex.messaging.MessageBrokerServlet
services.configuration.file /WEB-INF/flex/services-config.xml
messageBroker
/messagebroker/*
2.4 添加BlazeDS的配置文件
BlazeDS 所需的所有配置文件均放在 /WEB-INF/flex/ 目录下。BlazeDS 将读取 services-config.xml 配置文件,该配置文件又引用了remoting-config.xml、proxy-config.xml 和 messaging-config.xml 这 3 个配置文件。
由于 BlazeDS 需要将 Java 接口 ResourceService 暴露给 Flex 前端,因此,我们在配置文件 remoting-config.xml 中将 ResourceService接口声明为一个服务。
spring
resourceService
Flex通过 BlazeDS 调用 ResourceService, ResourceService对象已经被 Spring 管理,在此需要编写一个 FlexFactory 告诉 BlazeDS 如何找到Spring 管理的 ResourceService的实例。FlexFactory在 services-config.xml 中指定:
2.5 SpringFlexFactoryp定义
public class SpringFlexFactory implements FlexFactory {
private static final String SOURCE = "source";
public void initialize(String id, ConfigMap configMap)
{……}
public FactoryInstance createFactoryInstance(String id, ConfigMap properties) {……}
public Object lookup(FactoryInstance inst) {……}
……
}
3 Flex客户端开发
使用spring作为粘合济,可以很方便的将flex整合到现有的web应用系统中。在实际操作中,推荐单独创建flex类型的项目,与web项目进行整合,如图2所示。
图2 flex项目
3.1 设置服务器属性
服务器属性设计如图3所示。
其中,在服务器选项中,选择的服务器类型为JAVA,远程对像访问为BlazeDS;服务器位置中的设置要和web应用程序的文件夹位置、根据URL等位置相对应。已编译的Flex应用程序位置要和web应用程序位置相对应。
3.2 Flex功能实现
为了能在 Flex 中实现远程调用,需要定义一个 RemoteObject 对象。在MXML中定义一个RemoteObject 对象,在Resource.mxml添加远程调用。
result="onResult(event)" fault="onFault(event)">
result="getResourcePageWraper(event)"/>
其中,s:RemoteObject的id的值为在remoting-config.xml中定义的destination的id值,s:method中定义的name值为ResourceService中对应该的方法名称。Result的值为执行操作并返回结果的函数。
4 结束语
本文描述了在现有的JAVA EE应用程序基础上,进行FLEX开发环境的配置方法和过程,该框架结构在多个web系统中得到了应用,取得了较好的效果。
参考文献:
[1]戴侃,杨小虎.基于J2EE和FLEX技术构建RIA系统的探索与实现[J].微电子学与计算机,2003,5:22-24
[2]将 Flex 集成到 Java EE 应用程序的最佳实践,2009,8,5.
[作者简介]张海建(1978-),男,北京市,讲师,硕士,从事数据库系统设计、应用软件开发的研究。