文/梁正和
一直以來,多媒體教學(xué)設(shè)備的維護(hù)和使用等繁重的管理工作使很多學(xué)校感到頭疼。河海大學(xué)開發(fā)了一套基于校園網(wǎng)絡(luò)的分布式多媒體教學(xué)設(shè)備控制及使用管理系統(tǒng),實現(xiàn)多媒體教室實時狀態(tài)的監(jiān)控。該系統(tǒng)的使用大大降低了管理人員的工作量,提高了管理效率。
隨著社會的發(fā)展,教學(xué)方式也在悄悄地發(fā)生變化,教學(xué)不再是一支粉筆、一塊黑板,而是利用多媒體設(shè)備制作生動的圖像、視頻等,從而達(dá)到更好的教學(xué)效果。因此,學(xué)校建設(shè)越來越多的多媒體教室,師生也越來越依賴多媒體教室。然而,隨著多媒體教室的大量增加,多媒體教學(xué)設(shè)備的維護(hù)和使用等繁重的管理工作使很多學(xué)校感到頭疼。目前高校多媒體教學(xué)設(shè)備管理還是采用人工方式,每個教室有一個多媒體設(shè)備的中央控制器(簡稱:中控),分別控制投影機(jī)的開關(guān)、幕布的升降、電腦的開關(guān)、投影信號的切換等。一個教室是一個獨立的整體,每天必須有人根據(jù)當(dāng)日教室的上課情況為教師打開多媒體設(shè)備,在教師上課結(jié)束后要關(guān)閉多媒體設(shè)備。當(dāng)多媒體教室很多時,這是一個很大的工作量。當(dāng)一個教室投影機(jī)燈泡使用達(dá)到一定的時間以后,投影機(jī)投影效果大大下降,就會影響教師上課。
在物聯(lián)網(wǎng)思想越來越深入人心的今天,河海大學(xué)開發(fā)了一套基于校園網(wǎng)絡(luò)的分布式多媒體教學(xué)設(shè)備控制及使用管理系統(tǒng),實現(xiàn)多媒體教室實時狀態(tài)的監(jiān)控,實現(xiàn)多媒體設(shè)備根據(jù)課表的時間自動開啟和關(guān)閉,也可以通過網(wǎng)絡(luò)遠(yuǎn)程手動開啟或關(guān)閉,自動統(tǒng)計各個教室的投影機(jī)燈泡使用時長,設(shè)置時長上限,實現(xiàn)自動提前預(yù)警。通過網(wǎng)絡(luò)可以上報多媒體設(shè)備的故障。當(dāng)教室存在沒有處理的故障報告時,多媒體教室的監(jiān)控屏上出現(xiàn)黃燈警告提示。這個系統(tǒng)的使用大大降低了管理人員的工作量,提高了管理效率。目前國內(nèi)多媒體設(shè)備集中控制系統(tǒng)的現(xiàn)狀是:有的采用專門總線,實施困難;有的采用通用網(wǎng)絡(luò),沒有采用分布式架構(gòu)。該系統(tǒng)完全采用的是Java分布式架構(gòu)和B/S模式。
多媒體教學(xué)設(shè)備控制及使用管理系統(tǒng)采用了J2EE分布式多層架構(gòu),分為數(shù)據(jù)庫層、實體組件層、會話組件層、Web界面組件層。Web界面層采用JSF+Ajax,組件采用EJB組件。
整個系統(tǒng)從功能上分為通訊層和應(yīng)用管理層。通訊層是由一個多線程服務(wù)器和所有多媒體教室的中控組成,負(fù)責(zé)與所有多媒體教室的中控進(jìn)行通訊,將管理層下達(dá)給某教室的控制命令發(fā)送到教室的中控,并將中控執(zhí)行的結(jié)果寫入數(shù)據(jù)庫。應(yīng)用管理層完成對多媒體教室的上層管理。通訊層和應(yīng)用管理層通過數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)交換與共享。系統(tǒng)總體架構(gòu)如圖1所示。
圖1 多媒體教學(xué)設(shè)備控制及使用管理系統(tǒng)總體架構(gòu)
通訊層完成服務(wù)器和所有教室中控的通訊,是整個系統(tǒng)的基礎(chǔ)。我們在TCP/IP協(xié)議基礎(chǔ)上設(shè)計了專門的應(yīng)用層通訊協(xié)議,根據(jù)不同的發(fā)起方分為兩類:一類是由服務(wù)器發(fā)起的向教室的中控下達(dá)命令的協(xié)議;另一類是教室的中控由教室手動改變多媒體設(shè)備狀態(tài)而發(fā)起的通知服務(wù)器關(guān)于教室多媒體設(shè)備狀態(tài)改變的協(xié)議。實現(xiàn)的功能可以分為三類:第一類是服務(wù)器向教室的中控詢問多媒體設(shè)備的狀態(tài);第二類是服務(wù)器根據(jù)管理層下達(dá)的多媒體控制命令發(fā)送到教室的中控,并將中控執(zhí)行的結(jié)果返回,修改數(shù)據(jù)庫中的教室多媒體設(shè)備的狀態(tài)信息;第三類是教室的中控主動向服務(wù)器匯報多媒體設(shè)備狀態(tài)的變更信息。
教室的中控作為通訊的客戶端,而通訊服務(wù)器是一個多線程的通訊服務(wù)器,一個服務(wù)器進(jìn)程始終處于監(jiān)聽狀態(tài)。一旦有新的教室連接后立刻創(chuàng)建新的線程,讓新的線程專門為該教室服務(wù),完成與該教室有關(guān)的一切通訊任務(wù)。管理層給教室下達(dá)的命令是宏命令,一個宏命令由一個或多個微命令組成,完成一個相對完整的功能,微命令是一個教室中控所能執(zhí)行的基本命令,功能單一,并不完整。為教室服務(wù)的線程將管理層下達(dá)的宏命令分解成若干條微命令,再將一條一條的微命令發(fā)送到教室的中控執(zhí)行,教室的中控將執(zhí)行的結(jié)果返回給服務(wù)器線程,一個宏命令的所有微命令都執(zhí)行成功,那么教室的多媒體設(shè)備狀態(tài)就會成功地改變,并寫入數(shù)據(jù)庫。當(dāng)教室多媒體設(shè)備狀態(tài)由于手動操作而改變,由中控主動將此改變通知服務(wù)器,服務(wù)器將教室多媒體設(shè)備的狀態(tài)改變寫入數(shù)據(jù)庫。
通訊服務(wù)器是Java單實例對象,只能創(chuàng)建一個實例,由于整個系統(tǒng)是B/S結(jié)構(gòu),因此在Web服務(wù)器中通過WebListener創(chuàng)建服務(wù)器實例,將必要的服務(wù)器需要的EJB組件接口及系統(tǒng)變量設(shè)置對象創(chuàng)建好放置在ServletContext中,創(chuàng)建好的服務(wù)器實例放置在ServletContext的“MMCSERVE”變量中,通過應(yīng)用管理中的專門功能使服務(wù)器進(jìn)程處于監(jiān)聽狀態(tài)或退出監(jiān)聽狀態(tài),如圖2所示。
圖2 通訊服務(wù)器啟動或關(guān)閉
圖3 實現(xiàn)教室多媒體設(shè)備狀態(tài)監(jiān)視的原理
應(yīng)用管理層完成整個多媒體教室設(shè)備的控制和使用管理,完全采用B/S結(jié)構(gòu),其功能包括實現(xiàn)通過課表自動開啟或關(guān)閉某個教室的多媒體設(shè)備;手動遠(yuǎn)程控制某教室的多媒體設(shè)備;接受來自校園內(nèi)的多媒體教室的設(shè)備故障報告;實現(xiàn)對所有多媒體教室設(shè)備狀態(tài)的監(jiān)視等。需要解決的關(guān)鍵問題有兩個,一個是根據(jù)課表按時自動向即將上課或已經(jīng)下課的教室下達(dá)多媒體設(shè)備開啟或關(guān)閉的命令;另一個是當(dāng)通訊層改變了多媒體設(shè)備在數(shù)據(jù)庫中的狀態(tài)時,在B/S模式下,如何將數(shù)據(jù)庫中多媒體設(shè)備狀態(tài)的變化主動推送到客戶端,從而實現(xiàn)多媒體教室設(shè)備狀態(tài)的監(jiān)視。
通過課表自動開啟或關(guān)閉教室多媒體設(shè)備
根據(jù)課表按時自動向即將上課或已經(jīng)下課的教室下達(dá)多媒體設(shè)備開啟或關(guān)閉命令,這通過一個定時EJB會話組件來實現(xiàn)。我們設(shè)計了一個定時EJB組件,可以通過系統(tǒng)參數(shù)定時,如果沒有設(shè)定參數(shù),那么默認(rèn)時間是1分鐘。定時EJB組件每隔一個時間就輪詢當(dāng)日課表,如果某個教室即將上課,距離上課時間在10分鐘以內(nèi),那么就向通訊層下達(dá)該教室上課命令,通訊層將上課命令分解為一聯(lián)串的微命令發(fā)送給上課教師的中控。EJB定時組件在通訊服務(wù)器啟動時一起啟動定時。由于投影機(jī)開關(guān)時延較長,因此必須將一個教室連續(xù)上課時間段合并成一個時間段,合并時間段是組件編程中的一個重要內(nèi)容。
在B/S模式下實現(xiàn)信息服務(wù)器方推送
由于通訊服務(wù)器將多媒體教室的設(shè)備狀態(tài)寫入數(shù)據(jù)庫中,在應(yīng)用管理層要實現(xiàn)教室多媒體設(shè)備狀態(tài)的監(jiān)視(可以通過大屏幕)。在B/S模式下,就必須實現(xiàn)信息由服務(wù)器主動推至瀏覽器,違背了Web服務(wù)的get/response模式。實現(xiàn)服務(wù)器方信息推送技術(shù)方法有多種,最常用的且最基本的方法是利用客戶端腳本設(shè)計一個定時器,定時向Web服務(wù)器發(fā)送頁面請求,利用Ajax技術(shù),通過XmlHttp協(xié)議將頁面請求發(fā)送至控制器MonitorServlet,由控制器調(diào)用JSF中的受管Bean重新訪問數(shù)據(jù)庫,獲取最新的多媒體設(shè)備狀態(tài)信息。在JSF中,由于頁面顯示是由JSF控制器完成的,必須調(diào)用JSF底層方法重新生成頁面HTML代碼,最終實現(xiàn)頁面的刷新。其原理如圖3所示。
多媒體教學(xué)設(shè)備控制及使用管理系統(tǒng)在河海大學(xué)的幾十個教室里使用,取得很好的效果,系統(tǒng)穩(wěn)定、可靠,大大提高了多媒體教室的管理效率。然而,目前服務(wù)器和教室中控的通訊方式是教室中控客戶端,一旦與服務(wù)器連接,就一直處于連接狀態(tài),增加了網(wǎng)絡(luò)的流量。如果教室中控既是客戶端,也是服務(wù)器,那么當(dāng)服務(wù)器向教室中控發(fā)送命令時,服務(wù)器以客戶連接教室中控的服務(wù)器,發(fā)送控制命令,當(dāng)教室中控向服務(wù)器發(fā)送信息時,以客戶連接服務(wù)器向服務(wù)器發(fā)送信息,這樣服務(wù)器無須一直和中控處于連接狀態(tài),按需連接,可大大降低網(wǎng)絡(luò)流量。目前的中控是沒有操作系統(tǒng)的單片機(jī),實現(xiàn)多進(jìn)程或多線程存在一定困難。采用帶有操作系統(tǒng)的嵌入式編程,實現(xiàn)按需連接,是中控在今后需要改進(jìn)之處。