專利名稱::一種電子節(jié)目菜單系統(tǒng)及其功能模塊動態(tài)加載運行方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種EPG(ElectronicProgramGuide,電子節(jié)目菜單)系統(tǒng)及其功能模塊動態(tài)加載運行方法。
背景技術(shù):
:IPTV(InternetProtocolTelevision,互聯(lián)網(wǎng)電視)作為3爭電信4亍業(yè)與廣電行業(yè)的新的應(yīng)用,有著相當(dāng)廣闊的市場前景。一方面,目前的電信行業(yè)隨著人們需求的發(fā)展,已經(jīng)快速進入寬帶時代,寬帶已經(jīng)逐步開始融入社會生活的各個層面,而IPTV就是在現(xiàn)有電信寬帶網(wǎng)絡(luò)上將視頻媒體融合到電信業(yè)務(wù)中最佳的技術(shù)。盡管目前IPTV的實際用戶數(shù)量值還不是十分大,但是用戶數(shù)在不斷地增加,總體的發(fā)展趨勢也處于穩(wěn)定上升的狀態(tài)中。另一方面,IPTV已經(jīng)不局限于只提供直播,點播這些基本的功能,還包含卡拉OK、全球眼等增值業(yè)務(wù)。EPG(ElectronicProgramGuide,電子節(jié)目菜單)系統(tǒng)在IPTV中起著十分重要的作用,是觀眾進入IPTV的門戶。IPTV所提供的各種業(yè)務(wù)的索引及導(dǎo)力元都是通過EPG系統(tǒng)來完成的。EPG系統(tǒng)的界面與Web(WorldWideWeb,萬維網(wǎng))頁面類似,一般都提供各類菜單、按鈕、鏈接等可供用戶選擇節(jié)目時直接點擊的組件;EPG系統(tǒng)的界面上也可以包含各類供用戶瀏覽的動態(tài)或靜態(tài)的多媒體內(nèi)容。綜上所述,EPG系統(tǒng)必須為用戶提供高質(zhì)量的用戶體驗服務(wù),既要快速響應(yīng),又要操作簡便,還需要系統(tǒng)長時間穩(wěn)定運行;此外,隨著IPTV功能的不斷豐富、用戶數(shù)量的快速增加,使得EPG系統(tǒng)的功能也越來越復(fù)雜,EPG系統(tǒng)面臨的壓力也逐漸增大?;谏鲜鎏攸c,目前的EPG系統(tǒng)普遍存在如下問題(1)隨著用戶數(shù)的增長和IPTV內(nèi)容的大量增加,EPG系統(tǒng)需要為用戶提供24小時不間斷的服務(wù),因此需要將包括日志、用戶跟蹤、性能分析等與EPG功能無直接關(guān)系的附加功能模塊的同時加載運行,其中有很多功能模塊僅在特殊情況下才被調(diào)用,卻長期占用大量的內(nèi)存空間和處理資源,降低了系統(tǒng)的性能;(2)在需要增加新的功能模塊,或系統(tǒng)中的某個功能模塊需要進行升級時,必須停止整個EPG系統(tǒng)的運行,影響了用戶的正常使用。
發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是,克服現(xiàn)有技術(shù)中EPG系統(tǒng)的不足,提出一種可動態(tài)加載運行功能模塊的EPG系統(tǒng)及相應(yīng)的功能模塊的動態(tài)加載運4亍方法。為了解決上述問題,本發(fā)明提供一種電子節(jié)目菜單系統(tǒng),包含請求接收單元和電子節(jié)目菜單處理單元,其特征在于,該系統(tǒng)還包含前置單元,才莫塊加載單元;其中,模塊加載單元用于根據(jù)新增功能模塊的可執(zhí)行文件名加載功能模塊,并保存相應(yīng)的功能模塊實例標(biāo)識;前置單元用于在接收到請求接收單元發(fā)送的用戶請求后,使用功能模塊實例標(biāo)識,將用戶請求作為調(diào)用參數(shù),依次調(diào)用模塊加栽單元加載的可被調(diào)用的功能模塊;各功能模塊調(diào)用完畢后,將經(jīng)過各功能模塊處理的用戶請求發(fā)送至電子節(jié)目菜單處理單元進行電子節(jié)目菜單系統(tǒng)處理。此外,該系統(tǒng)還包含配置管理單元,運行參數(shù)存儲單元;其中,配置管理單元用于提供添加新增功能模塊的可執(zhí)行文件名及其相應(yīng)的運行參數(shù)的用戶界面,將添加的新增功能模塊的可執(zhí)行文件名及其相應(yīng)的運行參數(shù)發(fā)送至所述模塊加載單元;所述模塊加載單元根據(jù)配置管理單元發(fā)送的新增功能模塊的可執(zhí)行文件名加載功能模塊,并將相應(yīng)的功能模塊實例標(biāo)識及運行參數(shù)保存在運行參數(shù)存儲單元中;所述運行參數(shù)包含運行序號,用于標(biāo)識功能模塊的調(diào)用順序。此外,所述配置管理單元還用于修改保存在所述運行參數(shù)存儲單元中的,當(dāng)前已加載的各功能模塊的運行參數(shù);所述運行參數(shù)還包含運行狀態(tài),用于標(biāo)識當(dāng)前已加載的功能模塊是否可以被調(diào)用。此外,所述電子節(jié)目菜單系統(tǒng)及各功能模塊采用JAVA語言開發(fā);所述模塊加載單元采用如下方法加載功能模塊根據(jù)功能模塊的可執(zhí)行文件名獲得相應(yīng)的功能模塊的類名;根據(jù)類名加載可執(zhí)行文件中的類代碼;生成該類的實例,獲得相應(yīng)的類實例標(biāo)識;所述類實例標(biāo)識即功能^^莫塊實例標(biāo)識;可執(zhí)行文件名中包含功能模塊的類名。此外,所述運行參數(shù)存儲單元中還存儲新增模塊標(biāo)識,用于標(biāo)識是否有新的功能模塊被加載;和運行參數(shù)修改標(biāo)識,用于標(biāo)識已加載的功能模塊的運行參數(shù)是否被修改;所述模塊加載單元將新增的功能模塊實例標(biāo)識及運行參數(shù)保存在運行參數(shù)存儲單元時將新增模塊標(biāo)識設(shè)置為已新增;所述配置管理單元修改已加載的功能模塊的運行參數(shù)時將運行參數(shù)修改標(biāo)識設(shè)置為已修改;所述前置單元在接收到用戶請求后對新增模塊標(biāo)識和運行參數(shù)修改標(biāo)識進行判斷若新增模塊標(biāo)識為已新增或運行參數(shù)修改標(biāo)識為已修改,則使用更新的可被調(diào)用的功能模塊組合和順序進行所述功能模塊的調(diào)用,并將新增模塊標(biāo)識設(shè)置為未新增,將運行參數(shù)修改標(biāo)識設(shè)置為未修改。本發(fā)明還提供一種電子節(jié)目菜單系統(tǒng)的功能模塊動態(tài)加載運行方法,其特征在于,該方法包含如下步驟A:電子節(jié)目菜單系統(tǒng)的前置單元接收用戶請求;B:所述前置單元使用功能模塊實例標(biāo)識,將該用戶請求作為調(diào)用參數(shù),依次調(diào)用電子節(jié)目菜單系統(tǒng)的模塊加載單元加載的可被調(diào)用的功能模塊;C:所述前置單元將經(jīng)過各功能模塊處理的用戶請求發(fā)送至電子節(jié)目菜單系統(tǒng)的電子節(jié)目菜單處理單元進行電子節(jié)目菜單系統(tǒng)處理。此外,所述模塊加載單元采用如下步驟加載功能模塊Al:接收電子節(jié)目菜單系統(tǒng)的配置管理單元發(fā)送的新增功能模塊的可執(zhí)行文件名及其相應(yīng)的運行參數(shù);A2:根據(jù)可執(zhí)行文件名加載功能模塊,生成功能模塊實例;A3:保存功能模塊實例標(biāo)識及相應(yīng)的運行參數(shù);所述運行參數(shù)包含運行序號,用于標(biāo)識功能模塊的調(diào)用順序。此外,所述步驟A3后還包含如下步驟A4:所述配置管理單元顯示已加載的功能模塊的運行參數(shù);A5:修改功能模塊的運行參數(shù),并保存修改結(jié)果;所述運行參數(shù)還包含運行狀態(tài),用于標(biāo)識當(dāng)前已加載的功能模塊是否可以被調(diào)用。此外,所述步驟A2包含如下子步驟A21:根據(jù)功能模塊的可執(zhí)行文件名獲得相應(yīng)的功能模塊的類名;A22:根據(jù)上述類名加載可執(zhí)行文件中的類代碼;A23:生成類的實例,獲得相應(yīng)的類實例標(biāo)識;所述電子節(jié)目菜單系統(tǒng)及各功能模塊采用JAVA語言開發(fā);所述類實例標(biāo)識即功能模塊實例標(biāo)識;可執(zhí)行文件名中包含功能模塊的類名。此外,所述步驟A3之后還包含如下步驟將新增模塊標(biāo)識設(shè)置為已新增,標(biāo)識有新的功能模塊被加載;所述步驟A5之后還包含如下步驟將運行參數(shù)修改標(biāo)識設(shè)置為已修改,標(biāo)識已加載的功能模塊的運行參數(shù)被修改;所述步驟A和B之間還包含如下步驟A,所述前置單元對新增模塊標(biāo)識和運行參數(shù)修改標(biāo)識進行判斷若新增模塊標(biāo)識為已新增或運行參數(shù)修改標(biāo)識為已修改,則更新功能模塊列表;并將新增模塊標(biāo)識設(shè)置為未新增,將運行參數(shù)修改標(biāo)識設(shè)置為未修改;所述功能模塊列表中包含所述模塊加載單元加載的可被調(diào)用的功能模塊及其運行序號;在所述步驟B中,前置單元根據(jù)功能模塊列表,按照各功能模塊的運行序號依序進行所述功能模塊的調(diào)用。本發(fā)明通過配置管理單元和模塊加載單元動態(tài)加載功能模塊,并通過前置單元依序?qū)Ω鞴δ苣K進行調(diào)用,實現(xiàn)了EPG系統(tǒng)的功能模塊動態(tài)加載功能,減少了系統(tǒng)資源的占用,增加了EPG系統(tǒng)的靈活性。圖1是本發(fā)明實施例可實現(xiàn)功能模塊動態(tài)加載的EPG系統(tǒng)的系統(tǒng)結(jié)構(gòu)示意圖2是本發(fā)明實施例EPG系統(tǒng)的功能模塊動態(tài)加載方法流程圖3是本發(fā)明實施例EPG系統(tǒng)動態(tài)加載的功能模塊的運行方法流程圖。具體實施例方式下面將結(jié)合附圖和實施例對本發(fā)明進行詳細(xì)描述。圖1是本發(fā)明實施例可實現(xiàn)功能模塊動態(tài)加載的EPG系統(tǒng)的系統(tǒng)結(jié)構(gòu)示意圖。如圖1所示,EPG系統(tǒng)包含如下模塊請求接收單元,前置單元,運行參數(shù)存儲單元,模塊參數(shù)存儲單元,配置管理單元,模塊加載單元,EPG處理單元,請求應(yīng)答單元,以及各動態(tài)加載的功能模塊。其中,請求接收單元,用于接收用戶請求,并將接收到的用戶請求依序發(fā)送至前置單元進行處理。配置管理單元,用于提供用戶界面(UI),供系統(tǒng)管理員使用該UI增加需加載的新的功能模塊,設(shè)置該新增功能模塊的運行參數(shù),并將該新增功能模塊的可執(zhí)行文件的全路徑名和相應(yīng)的運行參數(shù)發(fā)送至模塊加載單元;修改當(dāng)前已加載的功能模塊的運行參數(shù),并將相應(yīng)的修改后的運行參數(shù)保存在運行參數(shù)存儲單元。上述運行參數(shù)包含運行序號參數(shù)和運行屬性參數(shù)。運行序號參數(shù)用于標(biāo)識對應(yīng)功能模塊的運行順序。運行屬性參數(shù)包含運行狀態(tài)、開始方式和停止方式以及相應(yīng)的時間參數(shù)。運行狀態(tài)用于標(biāo)識對應(yīng)功能模塊當(dāng)前處于正在運行狀態(tài)或停止運行狀態(tài)。上述正在運行狀態(tài)表示該功能模塊可以被調(diào)用/運行;停止運行狀態(tài)表示該功能模塊當(dāng)前不能被調(diào)用/運行。開始方式用于標(biāo)識對應(yīng)功能模塊的開始方式為手動開始,定時開始,或立即開始之一。手動開始方式表示由系統(tǒng)管理員將該功能模塊的運行狀態(tài)手動修改為正在運行狀態(tài);定時開始方式表示該功能模塊加載后處于停止運行狀態(tài),在設(shè)定的時刻變?yōu)檎谶\行狀態(tài);立即開始方式表示該功能模塊加載后即處于正在運行狀態(tài)。停止方式用于標(biāo)識對應(yīng)功能模塊的停止方式為定時停止,或手動停止之一。定時停止方式表示該功能模塊在設(shè)定的時刻由正在運行狀態(tài)變?yōu)橥V惯\行狀態(tài);手動停止方式表示在系統(tǒng)管理員將該功能模塊的運行狀態(tài)修改為停止運行狀態(tài)前,該功能模塊一直處于正在運行狀態(tài)。UI中可顯示當(dāng)前已加載的功能模塊的運行順序的信息,系統(tǒng)管理員根據(jù)該信息,通過填入適當(dāng)?shù)倪\行序號參數(shù)設(shè)置新加載的功能模塊的運行順序,并可通過修改運行序號參數(shù)改變已加載的功能模塊的運行順序;此外,UI中還可顯示當(dāng)前已加載的功能模塊的運行狀態(tài)的信息,系統(tǒng)管理員根據(jù)該信息改變已加載的功能模塊的運行狀態(tài),即將該功能模塊設(shè)置為正在運行^1大態(tài)或4f止運4亍狀態(tài)。模塊加載單元,用于接收配置管理單元發(fā)送的新增功能模塊的可執(zhí)行文件的全路徑名以及該新增功能模塊的運行參數(shù);根據(jù)該可執(zhí)行文件的全路徑名加載對應(yīng)的功能模塊及模塊參數(shù);將功能模塊加載到內(nèi)存中后生成的模塊實例標(biāo)識及相應(yīng)的模塊名稱和運行參數(shù)依序保存在運行參數(shù)存儲單元中;將模塊實例標(biāo)識及相應(yīng)的模塊參數(shù)保存在模塊參數(shù)存儲單元中。上述模塊實例標(biāo)識通常以類名稱的形式存在,類名稱通常與功能模塊的可執(zhí)行文件的名稱相同。功能模塊被模塊加載單元加載到內(nèi)存后,生成對應(yīng)的模塊實例標(biāo)識,前置單元通過模塊實例標(biāo)識調(diào)用該功能模塊。上述模塊參數(shù)可采用配置文件的形式包含在上述功能模塊的可執(zhí)行文件中或存儲在注冊表中。對于使用JAVA(爪哇)語言實現(xiàn)的EPG系統(tǒng),上述功能模塊的可l丸行文件的全路徑名就是帶有".class"擴展名的類文件名,例如,"路徑名\類名.class"。模塊加載單元根據(jù)該類文件的全路徑名獲取路徑名和類名(模塊名稱),并根據(jù)類名進行動態(tài)類載入(即將類代碼載入內(nèi)存),將該類實例化,獲得該類的實例標(biāo)識(模塊的實例標(biāo)識)。例如,使用如下代碼進行類載入,并實例化Classcc二Class.forName("類名"));share00=((share)cc).newlnstance();關(guān)于JAVA中的動態(tài)類載入的具體實現(xiàn)方式,請參閱相關(guān)開發(fā)文檔。上述功能模塊被動態(tài)加載后,在與EPG系統(tǒng)(模塊加載單元)相同的進程中運行。運行參數(shù)存儲單元,用于依序存儲各功能模塊的模塊名稱,模塊實例標(biāo)識,運行參數(shù)??梢圆捎靡韵履K動態(tài)加載表的形式存儲各功能模塊的模塊名稱,模塊實例標(biāo)識和運行參數(shù)。<table>tableseeoriginaldocumentpage11</column></row><table><table>tableseeoriginaldocumentpage12</column></row><table>表l:模塊動態(tài)加載表為了便于加載新的功能模塊,表l中的運行序號可以不連續(xù)。例如,當(dāng)前加載了n個功能模塊時,運行序號可以分別是10,20,......,10n。當(dāng)有新的功能模塊加入時,可以將其運行序號設(shè)置為15,使其在第一個功能模塊和第二個功能模塊之間運行,這樣處理可以減少對該表進行排序操作的次數(shù)。不同功能模塊的運行序號可以相同,表示相應(yīng)的功能模塊可以在不同的線程中同時被調(diào)用運行,即同步運行。若同步運行的各功能模塊需要對同一變量進行修改,需要進行互斥操作。表1中的模塊名稱可以是該功能模塊的可執(zhí)行文件(類文件)的全路徑名或不包含路徑的可執(zhí)行文件名稱(類名)。表1中的運行屬性標(biāo)識用于采用特定的數(shù)據(jù)結(jié)構(gòu)表示相應(yīng)功能模塊的運行屬性參數(shù)。例如,用1位(bit)標(biāo)識運行狀態(tài)0表示停止運行狀態(tài),l表示正在運行狀態(tài);用2位(bit)標(biāo)識開始方式0表示立即開始,l表示定時開始,2表示手動開始;用1位(bit)標(biāo)識停止方式0表示手動停止,1表示定時停止。此外,當(dāng)支持功能模塊的定時開始或定時停止方式時,表l中還需存儲相應(yīng)的定時時間參數(shù)。運行參數(shù)存儲單元中除模塊動態(tài)加載表外,還可設(shè)置新增模塊標(biāo)識和運4亍參lt修改標(biāo)識。新增模塊標(biāo)識用于標(biāo)識有新的功能模塊被加載,即模塊動態(tài)加載表有新增內(nèi)容。運行參數(shù)修改標(biāo)識用于標(biāo)識某功能模塊的運行參數(shù)已經(jīng)被修改,例如,運行狀態(tài)被修改。模塊參數(shù)存儲單元,用于存儲各功能模塊運行所需的模塊參數(shù)。模塊參數(shù)由模塊加載單元加載功能模塊時從可執(zhí)行文件中或其它配置文件中獲取,并保存在模塊參數(shù)存儲單元中,供各功能模塊讀取。前置單元,用于接收請求接收單元發(fā)送的用戶請求,對于每一個用戶請求,依序調(diào)用模塊動態(tài)加載表中處于正在運行狀態(tài)功能模塊,將用戶請求作為輸入?yún)?shù)傳遞給各功能模塊進行相應(yīng)的處理;各功能模塊運行/處理完畢后,根據(jù)其返回的處理結(jié)果信息將經(jīng)過處理的用戶請求發(fā)送至EPG處理單元。各功能模塊返回的處理結(jié)果信息可以是繼續(xù)處理和處理結(jié)束標(biāo)識。繼續(xù)處理表示相應(yīng)的用戶請求還需進行后續(xù)處理,需要前置單元調(diào)用下一功能模塊或?qū)⒃撚脩粽埱髷?shù)據(jù)發(fā)送至EPG處理單元。處理結(jié)束是指該用戶請求的處理已經(jīng)完畢,無需進行后續(xù)功能模塊的調(diào)用或?qū)⑵浒l(fā)送給EPG處理單元。EPG處理單元,用于完成EPG系統(tǒng)處理功能,包含接收前置單元發(fā)送的用戶請求,并根據(jù)該用戶請求生成用戶請求的響應(yīng)數(shù)據(jù);EPG處理單元將響應(yīng)數(shù)據(jù)通過請求應(yīng)答單元發(fā)送給用戶。此外,EPG處理單元還可通過請求應(yīng)答單元主動向用戶發(fā)送節(jié)目信息、節(jié)目附加信息等其它EPG信息。請求應(yīng)答單元,用于向用戶發(fā)送數(shù)據(jù)。各功能模塊用于完成特定的EPG系統(tǒng)附加功能,包含日志生成,用戶請求跟蹤等。各功能模塊可在EPG系統(tǒng)運行時動態(tài)加載,由前置單元依序調(diào)用。各功能模塊運行時可通過模塊參數(shù)存儲單元獲取本功能模塊所需的模塊參數(shù),對用戶請求數(shù)據(jù)進行分析和修改。上述用戶請求數(shù)據(jù)可以由前置單元以調(diào)用參數(shù)的形式傳遞給各功能模塊。上述調(diào)用參數(shù)可以是存儲相應(yīng)的用戶請求數(shù)據(jù)的存儲區(qū)的地址。各功能模塊根據(jù)具體的功能,可調(diào)用請求應(yīng)答單元向用戶發(fā)送應(yīng)答信息。圖2是本發(fā)明實施例EPG系統(tǒng)的功能模塊動態(tài)加載方法流程圖。如圖2所示,功能模塊動態(tài)加載包含如下步驟101:系統(tǒng)管理員在配置管理單元提供的UI中填寫新增功能模塊的可執(zhí)行文件的全路徑名,以及相應(yīng)的運行參數(shù),并將上述全路徑名和運行參數(shù)發(fā)送至模塊加載單元;102:模塊加載單元根據(jù)新增功能模塊的可執(zhí)行文件全路徑名加載相應(yīng)的功能模塊,生成模塊實例標(biāo)識;103:模塊加載單元將該功能模塊的模塊實例標(biāo)識和相應(yīng)的功能模塊運行參數(shù)依序存儲在運行參數(shù)存儲單元的模塊動態(tài)加載表中;各功能模塊在模塊動態(tài)加載表中可依照運行序號由小到大的順序存儲。104:模塊加載單元將該功能模塊的模塊參數(shù)存儲在模塊參數(shù)存儲單元;105:模塊加載單元將運行參數(shù)存儲單元中的新增模塊標(biāo)識設(shè)置為l(已新增標(biāo)識),表示有新的功能模塊被加載。106:模塊加載單元對每一個定時開始或定時停止的功能模塊設(shè)置相應(yīng)的定時器;定時器到期時相應(yīng)的定時器函數(shù)對該功能模塊的運行狀態(tài)進行修改。在功能模塊被加載后,系統(tǒng)管理員可使用配置管理單元提供的UI對各功能模塊的運行參數(shù)進行修改,主要包括(1)運行序號參數(shù)通過該參數(shù)的修改對各功能模塊的運行順序進行調(diào)整;(2)運行狀態(tài)將功能模塊的運行狀態(tài)修改為正在運行狀態(tài)(手動開始),或停止運行狀態(tài)(手動停止);對功能模塊的運行參數(shù)進行修改后,配置管理單元將運行參數(shù)存儲單元中的運行參數(shù)修改標(biāo)識修改為1(已修改標(biāo)識),表示某功能模塊的運行參數(shù)已被修改。除上述系統(tǒng)管理員對運行參數(shù)進行手動修改外,對于定時開始或定時停止的功能模塊,當(dāng)對應(yīng)的定時器到期時,相應(yīng)的定時器函數(shù)除對功能^t塊的運行狀態(tài)進行修改外,還需將運行參數(shù)修改標(biāo)識修改為1。當(dāng)然,運行參數(shù)修改標(biāo)識和新增模塊標(biāo)識可以使用同一變量,但是由于它們是由配置管理單元和模塊加載單元分別設(shè)置,若使用同一變量進行標(biāo)識需要進行互斥操作。圖3是本發(fā)明實施例EPG系統(tǒng)動態(tài)加載的功能模塊的運行方法流程圖。如圖2所示,動態(tài)加載的功能模塊的運行包含如下步驟201:請求接收單元將新接收到的用戶請求發(fā)送給前置單元;202:前置單元對運行參數(shù)存儲單元中的新增才莫塊標(biāo)識和運行參數(shù)修改標(biāo)識進行判斷,若其中任一標(biāo)識為l,則執(zhí)行下一步;否則跳轉(zhuǎn)至步驟204;203:前置單元更新功能模塊列表,即從模塊動態(tài)加載表中依序提取運行狀態(tài)為正在運行的功能模塊的模塊實例標(biāo)識,準(zhǔn)備使用更新的功能模塊的組合和順序進行功能模塊的調(diào)用;將新增模塊標(biāo)識和運行參數(shù)修改標(biāo)識設(shè)置為0(未新增或未修改);前置單元將模塊動態(tài)加載表中的處于正在運行狀態(tài)的各功能模塊的實例標(biāo)識依序保存在內(nèi)存的功能模塊列表中,以加快調(diào)用速度;功能模塊列表僅包含依序排列的處于正在運行狀態(tài)的功能模塊的模塊實例標(biāo)識及相應(yīng)的運行序號;當(dāng)模塊動態(tài)加載表出現(xiàn)變化時,前置單元需要進行功能模塊列表更新,即從模塊動態(tài)加載表中重新依序提取處于正在運行狀態(tài)的功能模塊。204:前置單元采用功能模塊列表,按照運行序號由小到大的順序通過模塊實例標(biāo)識調(diào)用各功能模塊,調(diào)用時將用戶請求數(shù)據(jù)傳遞給各功能模塊;對于運行序號相同的功能模塊,前置單元可在不同的線程中調(diào)用不同的功能模塊。205:各功能模塊從模塊參數(shù)存儲單元中獲取相應(yīng)的模塊參數(shù);對用戶請求進行相應(yīng)的處理,處理完畢后將處理結(jié)果信息返回^^前置單元;206:前置單元將用戶請求傳遞給EPG處理單元。需要注意的是,功能模塊的處理結(jié)果信息可以是"處理結(jié)束"標(biāo)識,表示該用戶請求已處理完畢,前置單元無需發(fā)送至后續(xù)的功能^t塊或EPG處理單元。以上描述了本發(fā)明實施例可動態(tài)加載功能^^莫塊的EPG系統(tǒng)及其相應(yīng)的加載運行方法。下面將舉兩個功能模塊的應(yīng)用實例,以便更具體、直觀地了解本發(fā)明。應(yīng)用實例1-攔截功能模塊該功能模塊的作用是對包含惡意或非法信息的用戶請求進行攔截。攔截功能模塊被調(diào)用時,通過HttpServletRequest方法對用戶請求進行分析,若該用戶請求中包含惡意或非法信息,例如,該請求要求重定向到一個非法頁面,則通過請求應(yīng)答單元向該用戶發(fā)送一個警告信息,并以"處理結(jié)束,,標(biāo)識作為處理結(jié)果信息返回給前置單元;前置單元停止后續(xù)功能^t塊的調(diào)用,也不將該用戶請求發(fā)送給EPG處理單元進行后續(xù)處理。應(yīng)用實例2-日志功能模塊該功能模塊的作用是對用戶請求進行跟蹤記錄,并生成日志。日志功能模塊被調(diào)用時,通過HttpServletRequest方法提取用戶請求的用戶session(會i舌)和cookie(甜點),以及所i奮求的URL(UniformResourceLocator,通用資源定位符)等信息;并將上述信息i己錄在日志文件中,該功能模塊執(zhí)行完畢后,前置單元調(diào)用后續(xù)功能模塊或?qū)⒂脩粽埱蟀l(fā)送給EPG處理單元進行后續(xù)處理。基于本發(fā)明的原理,上述實施例還可以有多種變換方式。例如模塊加載單元可以定時在設(shè)定的路徑中查找并加載尚未加載的功能模塊的可執(zhí)行文件。即不使用上述實施例的配置管理單元。當(dāng)然,若采用這種實施方式,功能模塊的運行參數(shù)無法動態(tài)進行配置,尤其是各功能模塊的運行順序也無法動態(tài)設(shè)置,需要以配置文件的形式保存。這種實施方式適用于功能模塊之間沒有先后執(zhí)行順序的差別,且各功能^t塊的運行參數(shù)可預(yù)先設(shè)定,無需動態(tài)修改的EPG系統(tǒng),新加載的功能模塊可最先或最后執(zhí)行。上述實施例針對JAVA開發(fā)環(huán)境中開發(fā)的EPG系統(tǒng)及其功能模塊的加載運行方法進行了描述,對于其它開發(fā)環(huán)境開發(fā)的EPG系統(tǒng),模塊加載單元根據(jù)可執(zhí)行文件加載的功能模塊可能與模塊加載單元及EPG系統(tǒng)屬于不同的進程,需要釆用進程間通訊手段進行數(shù)據(jù)交換。這種實施方式適用于需動態(tài)加載的功能模塊數(shù)量不多的EPG系統(tǒng)。權(quán)利要求1、一種電子節(jié)目菜單系統(tǒng),包含請求接收單元和電子節(jié)目菜單處理單元,其特征在于,該系統(tǒng)還包含前置單元,模塊加載單元;其中,模塊加載單元用于根據(jù)新增功能模塊的可執(zhí)行文件名加載功能模塊,并保存相應(yīng)的功能模塊實例標(biāo)識;前置單元用于在接收到請求接收單元發(fā)送的用戶請求后,使用功能模塊實例標(biāo)識,將用戶請求作為調(diào)用參數(shù),依次調(diào)用模塊加載單元加載的可被調(diào)用的功能模塊;各功能模塊調(diào)用完畢后,將經(jīng)過各功能模塊處理的用戶請求發(fā)送至電子節(jié)目菜單處理單元進行電子節(jié)目菜單系統(tǒng)處理。2、如權(quán)利要求1所述的電子節(jié)目菜單系統(tǒng),其特征在于,該系統(tǒng)還包含配置管理單元,運行參數(shù)存儲單元;其中,配置管理單元用于提供添加新增功能模塊的可執(zhí)行文件名及其相應(yīng)的運行參數(shù)的用戶界面,將添加的新增功能模塊的可執(zhí)行文件名及其相應(yīng)的運行參數(shù)發(fā)送至所述模塊加載單元;所述模塊加載單元根據(jù)配置管理單元發(fā)送的新增功能模塊的可執(zhí)行文件名加載功能模塊,并將相應(yīng)的功能模塊實例標(biāo)識及運行參數(shù)保存在運行參數(shù)存儲單元中;所述運行參數(shù)包含運行序號,用于標(biāo)識功能模塊的調(diào)用順序。3、如權(quán)利要求2所述的電子節(jié)目菜單系統(tǒng),其特征在于,所述配置管理單元還用于修改保存在所述運行參數(shù)存儲單元中的,當(dāng)前已加載的各功能模塊的運行參數(shù);所述運行參數(shù)還包含運行狀態(tài),用于標(biāo)識當(dāng)前已加載的功能模塊是否可以被調(diào)用。4、如權(quán)利要求2所述的電子節(jié)目菜單系統(tǒng),其特征在于,所述電子節(jié)目菜單系統(tǒng)及各功能模塊采用JAVA語言開發(fā);所述模塊加載單元釆用如下方法加載功能模塊根據(jù)功能模塊的可執(zhí)行文件名獲得相應(yīng)的功能模塊的類名;根據(jù)類名加載可執(zhí)行文件中的類代碼;生成該類的實例,獲得相應(yīng)的類實例標(biāo)識;所述類實例標(biāo)識即功能模塊實例標(biāo)識;可執(zhí)行文件名中包含功能模塊的類名。5、如權(quán)利要求3所述的電子節(jié)目菜單系統(tǒng),其特征在于,所述運行參數(shù)存儲單元中還存儲新增模塊標(biāo)識,用于標(biāo)識是否有新的功能模塊^C加載;和運行參數(shù)修改標(biāo)識,用于標(biāo)識已加載的功能模塊的運行參數(shù)是否被修改;所述模塊加載單元將新增的功能模塊實例標(biāo)識及運行參數(shù)保存在運行參數(shù)存儲單元時將新增模塊標(biāo)識設(shè)置為已新增;所述配置管理單元修改已加載的功能模塊的運行參數(shù)時將運行參數(shù)修改標(biāo)識設(shè)置為已修改;所述前置單元在接收到用戶請求后對新增模塊標(biāo)識和運行參數(shù)修改標(biāo)識進行判斷若新增模塊標(biāo)識為已新增或運行參數(shù)修改標(biāo)識為已修改,則使用更新的可被調(diào)用的功能模塊組合和順序進行所述功能模塊的調(diào)用,并將新增模塊標(biāo)識設(shè)置為未新增,將運行參數(shù)修改標(biāo)識設(shè)置為未修改。6、一種電子節(jié)目菜單系統(tǒng)的功能模塊動態(tài)加載運行方法,其特征在于,該方法包含如下步驟A:電子節(jié)目菜單系統(tǒng)的前置單元接收用戶請求;B:所述前置單元使用功能模塊實例標(biāo)識,將該用戶請求作為調(diào)用參數(shù),依次調(diào)用電子節(jié)目菜單系統(tǒng)的模塊加載單元加載的可被調(diào)用的功能模塊;C:所述前置單元將經(jīng)過各功能模塊處理的用戶請求發(fā)送至電子節(jié)目菜單系統(tǒng)的電子節(jié)目菜單處理單元進行電子節(jié)目菜單系統(tǒng)處理。7、如權(quán)利要求6所述的電子節(jié)目菜單系統(tǒng)的功能模塊動態(tài)加載運行方法,其特征在于,所述模塊加載單元采用如下步驟加載功能模塊Al:接收電子節(jié)目菜單系統(tǒng)的配置管理單元發(fā)送的新增功能模塊的可執(zhí)行文件名及其相應(yīng)的運行參數(shù);A2:根據(jù)可執(zhí)行文件名加載功能模塊,生成功能模塊實例;A3:保存功能模塊實例標(biāo)識及相應(yīng)的運行參數(shù);所述運行參數(shù)包含運行序號,用于標(biāo)識功能模塊的調(diào)用順序。8、如權(quán)利要求7所述的電子節(jié)目菜單系統(tǒng)的功能模塊動態(tài)加載運行方法,其特征在于,所述步驟A3后還包含如下步驟A4:所述配置管理單元顯示已加載的功能模塊的運行參數(shù);A5:修改功能模塊的運行參數(shù),并保存修改結(jié)果;所述運行參數(shù)還包含運行狀態(tài),用于標(biāo)識當(dāng)前已加載的功能模塊是否可以被調(diào)用。9、如權(quán)利要求7所述的電子節(jié)目菜單系統(tǒng)的功能模塊動態(tài)加載運行方法,其特征在于,所述步驟A2包含如下子步驟A21:根據(jù)功能模塊的可執(zhí)行文件名獲得相應(yīng)的功能模塊的類名;A22:根據(jù)上述類名加載可執(zhí)行文件中的類代碼;A23:生成類的實例,獲得相應(yīng)的類實例標(biāo)識;所述電子節(jié)目菜單系統(tǒng)及各功能模塊采用JAVA語言開發(fā);所述類實例標(biāo)識即功能模塊實例標(biāo)識;可執(zhí)行文件名中包含功能模塊的類名。10、如權(quán)利要求8所述的電子節(jié)目菜單系統(tǒng)的功能模塊動態(tài)加載運行方法,其特征在于,所述步驟A3之后還包含如下步驟將新增模塊標(biāo)識設(shè)置為已新增,標(biāo)識有新的功能模塊被加載;所述步驟A5之后還包含如下步驟將運行參數(shù)修改標(biāo)識設(shè)置為已修改,標(biāo)識已加載的功能模塊的運行參數(shù)被修改;所述步驟A和B之間還包含如下步驟A,所述前置單元對新增模塊標(biāo)識和運行參數(shù)修改標(biāo)識進行判斷若新增模塊標(biāo)識為已新增或運行參數(shù)修改標(biāo)識為已修改,則更新功能模塊列表;并將新增模塊標(biāo)識設(shè)置為未新增,將運行參數(shù)修改標(biāo)識設(shè)置為未修改;所述功能模塊列表中包含所述模塊加載單元加載的可被調(diào)用的功能模塊及其運行序號;在所述步驟B中,前置單元根據(jù)功能模塊列表,按照各功能模塊的運行序號依序進行所述功能模塊的調(diào)用。全文摘要一種EPG系統(tǒng)及其功能模塊動態(tài)加載運行方法,該系統(tǒng)包含請求接收單元,EPG處理單元,前置單元,模塊加載單元;模塊加載單元用于根據(jù)新增功能模塊的可執(zhí)行文件名加載功能模塊,并保存相應(yīng)的功能模塊實例標(biāo)識;前置單元用于在接收到請求接收單元發(fā)送的用戶請求后,使用功能模塊實例標(biāo)識,將用戶請求作為調(diào)用參數(shù),依次調(diào)用模塊加載單元加載的可被調(diào)用的功能模塊;各功能模塊調(diào)用完畢后,將經(jīng)過各功能模塊處理的用戶請求發(fā)送至EPG處理單元進行EPG系統(tǒng)處理。本發(fā)明通過模塊加載單元動態(tài)加載功能模塊,并通過前置單元依序?qū)Ω鞴δ苣K進行調(diào)用,實現(xiàn)了EPG系統(tǒng)的功能模塊動態(tài)加載功能,減少了系統(tǒng)資源的占用,增加了EPG系統(tǒng)的靈活性。文檔編號H04N5/445GK101115180SQ200710145949公開日2008年1月30日申請日期2007年9月7日優(yōu)先權(quán)日2007年9月7日發(fā)明者功李申請人:中興通訊股份有限公司