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