摘要:傳統(tǒng)的JAVA EE應(yīng)用程序使用采用某種MVC框架作為前端用戶界面,隨著技術(shù)的發(fā)展,使用者對用戶體驗方面有了更高的要求,F(xiàn)lex作為富客戶端技術(shù)在web技術(shù)中的應(yīng)用,在一定程度上提升了用戶交互性和用戶體驗度,為使用者提供了更酷的界面,更短的響應(yīng)時間及接近于桌面程序的體驗。本文主要討論如何將FLEX技術(shù)集成至一個現(xiàn)有的基于Spring的JAVA EE應(yīng)用程序中,闡述了Flex技術(shù)在JAVA EE應(yīng)用程序中的實現(xiàn)解決方案。
關(guān)鍵詞:JAVA EE;Flex;web應(yīng)用程序;開發(fā)框架
中圖分類號:TP311.52 文獻標識碼:A 文章編號:1007-9599 (2012) 17-0000-02
1 引言
Flex 是一個高效、免費的開源框架,可用于構(gòu)建具有表現(xiàn)力的 Web 應(yīng)用程序,這些應(yīng)用程序利用 Adobe Flash Player和 Adobe AIR, 運行時跨瀏覽器、桌面和操作系統(tǒng)實現(xiàn)一致的部署。Java EE是基于組件模型的、分層的、可用于分布式環(huán)境下的開發(fā)與部署企業(yè)級應(yīng)用程序的一系列服務(wù)和規(guī)范的集合。本文結(jié)合已有的基于Spring的Java EE框架應(yīng)用程序的基礎(chǔ)上,對flex開發(fā)環(huán)境進行配置,使用flex進行程序開發(fā)。
2 JAVA EE應(yīng)用程序加入Flex支持
現(xiàn)有一個現(xiàn)有的JAVA EE應(yīng)用程序,程序結(jié)構(gòu)如圖1所示
此web應(yīng)用程序是典型的JAVA EE應(yīng)用的程序。傳統(tǒng)程序交互界面一般采用HTML的形式,用戶在進行操作時,每次點擊相應(yīng)該的鏈接都需要重新的刷新界面。如采用Flex作為與用戶交互的界面,將會給用戶帶來更好的體驗。
本文以系統(tǒng)中權(quán)限管理模塊中的“資源查詢”為例,對現(xiàn)有的框架整合flex應(yīng)用進行闡述。
2.1 SSH框架概述
如圖1中所示,按照分層架構(gòu)的形式對資源進行劃分, action包中存放控制器類,service中存放業(yè)務(wù)接口類,在impl中存放業(yè)務(wù)實現(xiàn)類,utils包中存放實用程序類,在vo包中存放實體類;其中,applicationContext-dao.xml為spring的配置文件,struts.xml為struts2的配置文件。
2.2 集成Blazeds
Flex所負責的為表現(xiàn)層的內(nèi)容,只接收java返回的數(shù)據(jù),本文采用Adobe公司的開源項目Blazeds作為程序通訊的接口。Blazeds是一個基于服務(wù)器的 Java 遠程控制和 Web 消息傳遞技術(shù)。
將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,負責監(jiān)聽 Flex 遠程調(diào)用請求,并進行一些初始化設(shè)置:
MessageBrokerServlet 是真正處理 Flex 遠程調(diào)用請求的 Servlet,我們需要將其映射到指定的URL:
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接口聲明為一個服務(wù)。
resourceService
Flex通過 BlazeDS 調(diào)用 ResourceService, ResourceService對象已經(jīng)被 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客戶端開發(fā)
使用spring作為粘合濟,可以很方便的將flex整合到現(xiàn)有的web應(yīng)用系統(tǒng)中。在實際操作中,推薦單獨創(chuàng)建flex類型的項目,與web項目進行整合,如圖2所示。
圖2 flex項目
3.1 設(shè)置服務(wù)器屬性
服務(wù)器屬性設(shè)計如圖3所示。
其中,在服務(wù)器選項中,選擇的服務(wù)器類型為JAVA,遠程對像訪問為BlazeDS;服務(wù)器位置中的設(shè)置要和web應(yīng)用程序的文件夾位置、根據(jù)URL等位置相對應(yīng)。已編譯的Flex應(yīng)用程序位置要和web應(yīng)用程序位置相對應(yīng)。
3.2 Flex功能實現(xiàn)
為了能在 Flex 中實現(xiàn)遠程調(diào)用,需要定義一個 RemoteObject 對象。在MXML中定義一個RemoteObject 對象,在Resource.mxml添加遠程調(diào)用。
result=\"onResult(event)\" fault=\"onFault(event)\">
result=\"getResourcePageWraper(event)\"/>
其中,s:RemoteObject的id的值為在remoting-config.xml中定義的destination的id值,s:method中定義的name值為ResourceService中對應(yīng)該的方法名稱。Result的值為執(zhí)行操作并返回結(jié)果的函數(shù)。
4 結(jié)束語
本文描述了在現(xiàn)有的JAVA EE應(yīng)用程序基礎(chǔ)上,進行FLEX開發(fā)環(huán)境的配置方法和過程,該框架結(jié)構(gòu)在多個web系統(tǒng)中得到了應(yīng)用,取得了較好的效果。
參考文獻:
[1]戴侃,楊小虎.基于J2EE和FLEX技術(shù)構(gòu)建RIA系統(tǒng)的探索與實現(xiàn)[J].微電子學與計算機,2003,5:22-24
[2]將 Flex 集成到 Java EE 應(yīng)用程序的最佳實踐,2009,8,5.
[作者簡介]張海建(1978-),男,北京市,講師,碩士,從事數(shù)據(jù)庫系統(tǒng)設(shè)計、應(yīng)用軟件開發(fā)的研究。