張 亭
(天津美術(shù)學(xué)院設(shè)計(jì)與新媒體藝術(shù)實(shí)驗(yàn)教學(xué)中心, 天津 300342)
基于Struts和Hibernate架構(gòu)的渲染集群管理系統(tǒng)Web Portal的開發(fā)
張 亭
(天津美術(shù)學(xué)院設(shè)計(jì)與新媒體藝術(shù)實(shí)驗(yàn)教學(xué)中心, 天津 300342)
在已開發(fā)的渲染集群管理系統(tǒng)中,當(dāng)用戶提交任務(wù)后,由系統(tǒng)管理員根據(jù)渲染集群服務(wù)器中所有任務(wù)調(diào)度情況進(jìn)行分配,用戶不能根據(jù)自己的需求來管理渲染任務(wù),這樣會(huì)造成一定的失誤率。為解決上述問題,設(shè)計(jì)了基于Struts和Hibernate架構(gòu)的渲染集群管理系統(tǒng)的Web Portal,使用戶可以直觀、自主地對(duì)渲染任務(wù)進(jìn)行查看與管理。
系統(tǒng)框架; J2EE; Struts與 Hibernate;Web Portal
隨著影視、動(dòng)畫等新媒體創(chuàng)作形式的廣泛應(yīng)用,從而使影視特效及輸出的數(shù)字化運(yùn)算需求增加,一般普通的臺(tái)式電腦和工作站已經(jīng)無法滿足效果預(yù)覽的時(shí)效性要求。為了滿足學(xué)院教學(xué)和科研的創(chuàng)作需要,將后期運(yùn)算處理工作全部提交到渲染集群服務(wù)器處理。經(jīng)過對(duì)渲染集群服務(wù)器的使用,開發(fā)出渲染集群管理系統(tǒng),可以使管理員直觀地去操作控制渲染任務(wù),并實(shí)時(shí)了解服務(wù)器系統(tǒng)當(dāng)前的狀態(tài)。但是對(duì)于用戶提交渲染任務(wù)后,其渲染任務(wù)的管理是系統(tǒng)管理員根據(jù)渲染集群服務(wù)器中所有任務(wù)調(diào)度情況進(jìn)行分配。為了解決用戶不能自主管理渲染任務(wù)的問題,通過Struts與Hibernate架構(gòu)設(shè)計(jì)基于渲染集群管理系統(tǒng)的Web Portal,提供友好的管理界面,實(shí)現(xiàn)用戶遠(yuǎn)程對(duì)渲染任務(wù)進(jìn)行管理。
在Web界面應(yīng)用開發(fā)中,各個(gè)環(huán)節(jié)應(yīng)分工協(xié)作降低系統(tǒng)的耦合度,本文采用Struts與Hibernate相結(jié)合的方式進(jìn)行系統(tǒng)的架構(gòu)設(shè)計(jì)。 Struts是基于MVC應(yīng)用模式的開源框架,MVC模式可以實(shí)現(xiàn)J2EE應(yīng)用系統(tǒng)的分層,可以實(shí)現(xiàn)各層之間松耦合的、可面向動(dòng)態(tài)內(nèi)容的實(shí)現(xiàn)方式[1-3]。Struts分為3個(gè)部分:視圖層、控制層和模型層[4]。
視圖層: Struts提供taglib定義創(chuàng)建HTML和JSP頁面,實(shí)現(xiàn)建立界面,把業(yè)務(wù)邏輯和顯示邏輯分離,可以和模型層ActionForm對(duì)象進(jìn)行交互,達(dá)到用戶提交數(shù)據(jù)的封裝。
控制層:從客戶端接收的請(qǐng)求并執(zhí)行相應(yīng)的業(yè)務(wù)邏輯,最后將結(jié)果送回到客戶端。由ActionServlet 和ActionMapping對(duì)象構(gòu)成。
模型層:實(shí)現(xiàn)了系統(tǒng)中的業(yè)務(wù)邏輯,在Struts框架中模型層有Action 和ActionForm對(duì)象。Action 對(duì)象封裝具體的處理邏輯,將請(qǐng)求和業(yè)務(wù)邏輯分開,調(diào)用業(yè)務(wù)邏輯模塊,并提交到相應(yīng)視圖組件產(chǎn)生響應(yīng)。ActionForm對(duì)象實(shí)現(xiàn)對(duì)客戶端表單中各個(gè)數(shù)據(jù)的封裝并進(jìn)行數(shù)據(jù)傳遞。
由于Struts的基本架構(gòu)中需要詳細(xì)配置JDBC訪問數(shù)據(jù)庫,會(huì)使編程語言復(fù)雜化,導(dǎo)致層和層之間的耦合性大,難以維護(hù)[5]。Hibernate應(yīng)用ORM技術(shù)對(duì)Struts的JDBC訪問數(shù)據(jù)庫工作進(jìn)行應(yīng)用,從而不需要大量代碼和復(fù)雜的持久層,大大減少操作數(shù)據(jù)庫的工作量。層次間依賴關(guān)系的原則是自頂向下的,層次之間通過接口進(jìn)行交互[6]。
1)Web Portal層:通過將Struts和Hibernate結(jié)合建立渲染集群管理系統(tǒng)的Web Portal,利用J2EE技術(shù)編輯B/S結(jié)構(gòu)的用戶界面,可以讓用戶對(duì)任務(wù)進(jìn)行提交,按字段保存到SQL數(shù)據(jù)庫對(duì)應(yīng)的關(guān)系表中。通過數(shù)據(jù)的持久化操作將數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行調(diào)用,并通過任務(wù)Web界面顯示。
2)渲染集群服務(wù)器層:使用渲染集群服務(wù)器中的分發(fā)軟件(Enfuzion)對(duì)各個(gè)渲染節(jié)點(diǎn)進(jìn)行任務(wù)的分配和控制,然后將處理結(jié)果和相關(guān)信息經(jīng)過渲染集群管理系統(tǒng)保存到相應(yīng)的SQL數(shù)據(jù)庫中。
3)渲染集群管理系統(tǒng)層:渲染集群管理系統(tǒng)對(duì)數(shù)據(jù)庫進(jìn)行調(diào)用,通過分發(fā)軟件的接口函數(shù)(Enfuzion API)傳遞給渲染集群服務(wù)器層,任務(wù)處理結(jié)束后,接口函數(shù)將結(jié)果存放在數(shù)據(jù)庫對(duì)應(yīng)的關(guān)系表中,進(jìn)行任務(wù)數(shù)據(jù)的更新,以便Web Portal層顯示使用[7]。
渲染集群管理系統(tǒng)Web Portal的架構(gòu)見圖1。
圖1 渲染集群管理系統(tǒng)Web Portal的架構(gòu)圖Fig.1 Structure the rendering cluster management system Web Portal
渲染集群管理系統(tǒng)Web Portal的功能設(shè)計(jì)中包括4個(gè)主要模塊:權(quán)限管理模塊、系統(tǒng)管理模塊、文件管理模塊、任務(wù)管理模塊。根據(jù)權(quán)限模塊將用戶可分為管理員和一般用戶,包括userlogin,userdetail,userconfig,accessright 4個(gè)二維表來管理、驗(yàn)證用戶信息,決定用戶的使用權(quán)限等。系統(tǒng)管理模塊:可以讓管理員對(duì)系統(tǒng)的狀態(tài)實(shí)時(shí)查看和維護(hù),對(duì)每個(gè)渲染節(jié)點(diǎn)進(jìn)行差錯(cuò)控制,此功能模塊只對(duì)管理員用戶開放。文件管理模塊:可以實(shí)現(xiàn)用戶創(chuàng)建時(shí),由渲染集群管理系統(tǒng)分配給一個(gè)文件夾,來保存每次提交任務(wù)的項(xiàng)目文件和素材文件,可以實(shí)時(shí)查看這個(gè)文件夾中渲染輸出的圖像,渲染結(jié)束后對(duì)輸出文件夾內(nèi)容進(jìn)行下載,包括finalarchieve,privatefilezone,projectfile,publicfilezone,uploadarchieve 5個(gè)二維表來記錄用戶所要渲染文件的大小、文件格式、上傳路徑、上傳時(shí)間、輸出路徑等信息。任務(wù)管理模塊:主要是對(duì)上傳的項(xiàng)目文件參數(shù)進(jìn)行設(shè)置,通過提交的方式由渲染集群管理系統(tǒng)進(jìn)行處理,同時(shí)還可以查看任務(wù)的運(yùn)行狀態(tài)信息,包括gallery,keyframeing,message,submission,thumbimage 5個(gè)二維表來處理用戶所要渲染文件的起始幀、分辨率、文件格式、分發(fā)狀態(tài)等渲染參數(shù)。
4.1文件管理模塊
普通用戶在注冊(cè)時(shí),系統(tǒng)自動(dòng)為用戶創(chuàng)建一個(gè)以其用戶名命名的文件夾,其上傳的文件都將存儲(chǔ)在這個(gè)文件夾下。用戶文件管理的具體流程:用戶把上傳文件的項(xiàng)目文件進(jìn)行歸檔處理,形成壓縮文件夾形式;用戶在瀏覽器界面上進(jìn)行文件上傳,可以利用FTP等方式;渲染集群服務(wù)器的存儲(chǔ)空間中,對(duì)上傳的壓縮文件進(jìn)行解壓處理;上傳結(jié)束后跳轉(zhuǎn)到任務(wù)管理模塊的界面;在渲染集群服務(wù)器中可以在渲染輸出文件夾中查看渲染輸出圖像的效果;在結(jié)束后可以對(duì)整個(gè)文件夾進(jìn)行打包下載。
4.2任務(wù)管理模塊
文件上傳成功后,進(jìn)入創(chuàng)建渲染任務(wù)界面。新任務(wù)創(chuàng)建流程:用戶進(jìn)入添加新任務(wù)界面,顯示出添加新任務(wù)信息的表單,需要正確填寫渲染任務(wù)的相關(guān)信息,如項(xiàng)目名稱、項(xiàng)目文件及整個(gè)文件夾調(diào)用的相對(duì)文件路徑、存儲(chǔ)文件的相對(duì)路徑、起始幀、結(jié)束幀、渲染引擎、軟件版本等信息,最后點(diǎn)擊頁面中的提交按鈕[8]。具體的處理結(jié)構(gòu)流程見圖2。
圖2 添加新任務(wù)信息流程圖Fig.2 Flow chart of adding a new task
項(xiàng)目用戶通過添加新任務(wù)的界面taskadd.jsp,添加完新任務(wù)信息后通過HTTP請(qǐng)求提交給ActionServlet對(duì)象,ActionServlet檢索和用戶請(qǐng)求匹配的ActionMapping實(shí)例,創(chuàng)建一個(gè)與模型層對(duì)應(yīng)的taskaddActionForm對(duì)象,將用戶的請(qǐng)求表單內(nèi)容對(duì)應(yīng)保存到taskaddActionForm對(duì)象中。ActionServlet根據(jù)ActionMapping實(shí)例包含的映射信息決定將請(qǐng)求轉(zhuǎn)發(fā)給哪個(gè)taskaddAction進(jìn)行處理,taskaddAction使用execute()調(diào)用業(yè)務(wù)層接口方法,實(shí)現(xiàn)與模型對(duì)象taskhandle的通信,taskhandle執(zhí)行業(yè)務(wù)邏輯,通過Hibernate架構(gòu)實(shí)現(xiàn)Java類和SQL數(shù)據(jù)庫進(jìn)行通信。把新添加的任務(wù)信息根據(jù)用戶的ID插入到數(shù)據(jù)庫表taskhandle中,然后由execute()方法返回一個(gè)forward給ActionServlet,最后由taskinfoadd.jsp顯示添加完新任務(wù)信息后的課程信息概要。
4.3顯示渲染狀態(tài)的實(shí)現(xiàn)
顯示渲染狀態(tài)的具體做法是采用Hibernate架構(gòu)實(shí)現(xiàn)Java類與數(shù)據(jù)庫之間轉(zhuǎn)換和訪問,再通過視圖層以頁面形式顯示。用面向?qū)ο蟮姆治龇椒ǜ鶕?jù)需求來提出一個(gè)模型,將這些模型用Java語言實(shí)現(xiàn)基本的Java對(duì)象,然后寫出基本的DAO接口,并給出Hibernate的DAO模式[9]。DAO模式通過對(duì)底層數(shù)據(jù)的封裝,將數(shù)據(jù)訪問邏輯與業(yè)務(wù)處理邏輯分開,提供抽象化的數(shù)據(jù)訪問接口,業(yè)務(wù)層不需要關(guān)于數(shù)據(jù)庫的具體操作,在DAO類中通過數(shù)據(jù)庫連接類操作數(shù)據(jù)庫。DAO類實(shí)現(xiàn)了DAO接口,并實(shí)現(xiàn)了DAO接口中所有的抽象方法。通過Hibernate的DAO類實(shí)現(xiàn)Java類數(shù)據(jù)庫之間的轉(zhuǎn)換和訪問。在Struts架構(gòu)的控制器部分中的Action中調(diào)用業(yè)務(wù)類 BO(business object)來完成業(yè)務(wù)邏輯,利用DAO模式實(shí)現(xiàn)Struts與Hibernate的結(jié)合。每個(gè)持久化對(duì)象PO對(duì)應(yīng)于數(shù)據(jù)庫的一個(gè)關(guān)系表,而DAO用于持久化PO,Hibernate則通過映射文件把持久化對(duì)象到關(guān)系數(shù)據(jù)庫中。下面就是通過taskhandleDAO方式實(shí)現(xiàn)渲染任務(wù)狀態(tài)的實(shí)時(shí)查詢[10]。調(diào)用過程如圖3所示。
圖3 調(diào)用數(shù)據(jù)持久化對(duì)象的流程Fig.3 Process of calling data persistence objects
getbyUser()方法根據(jù)登錄用戶名和密碼進(jìn)行身份驗(yàn)證,從而獲取數(shù)據(jù)庫中所存儲(chǔ)的taskid信息。渲染集群服務(wù)器在處理過程中渲染任務(wù)的狀態(tài)是變化的,本系統(tǒng)設(shè)計(jì)是用戶通過訪問查詢某個(gè)任務(wù)時(shí),可以通過調(diào)用渲染集群管理系統(tǒng)的setState()函數(shù)來獲取當(dāng)前任務(wù)狀態(tài),并將該狀態(tài)存儲(chǔ)到所使用數(shù)據(jù)庫中,在JSP界面中規(guī)律有序的顯示全部任務(wù),實(shí)時(shí)顯示任務(wù)狀態(tài)。
public class taskhandle Monitor{
public taskhandle DAO taskhdao;
taskhdao=DAOFactory.getInstance().taskhandle DAO ();
public boolean getbyUser (String name,String psword);
public Taskhandle PO setState();
}
應(yīng)用Struts和Hibernate結(jié)合的方式設(shè)計(jì)基于渲染集群管理系統(tǒng)的Web Portal,結(jié)構(gòu)層次開發(fā)簡潔、清晰,有很好的擴(kuò)展性和可維護(hù)性。通過提供給用戶遠(yuǎn)程、自主控制集群渲染服務(wù)器使用的方式,實(shí)現(xiàn)實(shí)時(shí)對(duì)任務(wù)的渲染結(jié)果進(jìn)行查詢預(yù)覽,發(fā)現(xiàn)錯(cuò)誤及時(shí)通知系統(tǒng)管理員對(duì)任務(wù)進(jìn)行停止并修復(fù),從而提高了渲染結(jié)果的成功率。
/
[1] 王天擎. 基于MVC_X的Web 應(yīng)用開發(fā)研究與設(shè)計(jì)[J]. 計(jì)算機(jī)應(yīng)用與軟件,2007,24(5):37-39.
WANG Tianqing. Research and design of Web application development based on MVC_X[J]. Computer Applications and Software, 2007,24(5):37-39.
[2] 劉 潔,薄祥臣. “科技計(jì)劃項(xiàng)目網(wǎng)上管理中心”的設(shè)計(jì)與實(shí)現(xiàn)[J].河北科技大學(xué)學(xué)報(bào),2011,32(6):590-593.
LIU Jie,BO Xiangchen. Design and implementation of“science and technology plan projects online management center”[J]. Journal of Hebei University of Science and Technology, 2011,32(6):590-593.
[3] 史金磊,朱海榮. 基于B/S的中小型酒店預(yù)訂房間系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 河北工業(yè)科技,2009,26(4):260-262.
SHI Jinlei,ZHU Hairong. Design and realization of small and medium-sized hotel room reservations system based on B/S[J]. Hebei Journal of Industrial Science and Technology, 2009,26(4):260-262.
[4] 張宗福. 基于STRUTS 框架開發(fā)MVC 模式的WEB 應(yīng)用[J]. 計(jì)算機(jī)光盤軟件與應(yīng)用,2012(22):206-208.
ZHANG Zongfu. WEB applications based on the the STRUTS framework developed MVC pattern[J].Computer CD Software and Applications, 2012(22):206-208.
[5] 梁國業(yè),廖健平.基于J2EE的輕量級(jí)持久層框架的設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2008(10):88-89.
LIANG Guoye,LIAO Jianping. The design of lightweight persistence layer framework based on J2EE[J]. Computer Know-ledge and Technology, 2008(10):88-89.
[6] 阮 飛,陳赫貝. J2EE數(shù)據(jù)持久層技術(shù)及其比較[J].微機(jī)發(fā)展,2005,15(10):85-87.
RUAN Fei,CHEN Hebei. J2EE data persistence and its comparison[J]. Microcomputer Development, 2005,15(10):85-87.
[7] 任 政,楊旭波,肖雙九,等. 遠(yuǎn)程渲染分發(fā)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2008,25(7):6-10.
REN Zheng, YANG Xubo, XIAO Shuangjiu,et al. Design and implementation of remote rendering dispatching management system[J]. Computer Applications and Software, 2008,25(7):6-10.
[8] 張永弟,岳彥芳,陳曹維, 等.基于Web的CAPP與MES信息集成化管理系統(tǒng)[J].河北科技大學(xué)學(xué)報(bào), 2008,29(2):152-157.
ZHANG Yongdi,YUE Yanfang,CHEN Caowei,et al. Web-based CAPP and MES integrated information management system[J]. Journal of Hebei University of Science and Technology, 2008,29(2):152-157.
[9] 魏惠茹, 李曉東, 任 剛.Hibernate對(duì)象持久化技術(shù)的研究[J]. 電腦知識(shí)與技術(shù),2011,19(7):4 733-4 734.
WEI Huiru, LI Xiaodong, REN Gang. Study on object persistence of Hibernate[J]. Computer Knowledge and Technology, 2011,19(7):4 733-4 734.
[10] 鄒 俊. 整合 Struts 和 Hibernate 框架的 Web 應(yīng)用開發(fā)[J]. 微計(jì)算機(jī)信息, 2008, 22(9): 235-236.
ZOU Jun. Web applications development integrating Struts with Hibernate[J].Microcomputer Information, 2008, 22(9): 235-236.
Development of Web Portal based on Struts and Hibernate
ZHANG Ting
(Experimental Teaching Center of Design and New Media Art, Tianjin Academy of Fine Arts, Tianjin 300342, China)
In existing render cluster management systems, when a user submits a task, the system administrator allocates it considering all the tasks in the render cluster server. Users can not manage rendering tasks according to their demand. It can cause a certain error rate. In order to solve the above problems, a Web Portal of render cluster management system is designed combining Struts and Hibernate, so that the users can clearly view and manage their render tasks.
framework; J2EE; Struts and Hibernate; Web Portal
1008-1534(2013)04-0253-04
TP311.1
A
10.7535/hbgykj.2013yx0408
2013-03-22;
2013-04-26
責(zé)任編輯:陳書欣
天津美術(shù)學(xué)院科研項(xiàng)目(2012042)
張 亭(1981-),男,天津人,實(shí)驗(yàn)師,主要從事計(jì)算機(jī)信息安全、信息智能處理方面的研究。
E-mail:zt3562@163.com