蘇長明
(成都大學信息科學與技術學院,四川成都 610106)
目前,J2ME(Java Micro Edition)平臺為嵌入式消費類電子產品,如移動電話、PDA、電視機頂盒等提供了一個通用的開發平臺,其具有移植性好、部署靈活、安全性高等優點.J2EE(Java Enterprise Edition)是一種使用在服務器端,并利用Java 2平臺來簡化企業解決方案的開發、部署和管理相關的復雜問題的體系結構,J2EE以先進的架構成為企業級應用的首選.本研究基于J2ME與J2EE技術設計開發了一種校園移動信息查詢系統.
客戶端采用J2ME技術來實現,J2ME平臺由多種配置(Configuration)、簡表(Profile)和可選包(Optional Package)[1]組成,其體系結構如圖1所示.

圖1 J2ME平臺的體系結構
J2ME平臺包含:連接設備配置(Connected Device Configuration,CDC)和連接受限設備(Connected Limited Device Configuration,CLDC).CLDC是兩個配置中較小的一個,主要為具有間斷性聯網能力、較慢的處理器和有限內存的設備設計的,例如移動電話、雙向呼叫和入門級的PDA等.CDC是為了處理能力強、內存空間更大、聯網能力更出色的設備設計的,例如電視機頂盒、車載娛樂系統、高端PDA等.為了給目標設備提供完整的運行環境,配置必須和簡表組合.
通常,簡表位于配置之上,其主要是為目標設備提供完備的應用程序運行環境而設計的.基于CLDC和CDC的幾個重要簡表包括:移動信息設備簡表(Mobile Information Device Profile,MIDP),基礎簡表(Foundation Profile,FP)、個人配置簡表(Personal Profile,PP)、個人基礎簡表(Personal Basic Profile,PBP).其中,MIDP主要針對移動電話等低端PDA,FP是CDC中Profile的基礎,PP主要針對需要用戶界面的設備,PBP為網絡連接的設備提供了應用程序環境,例如機頂盒等.
可見,J2ME的跨平臺技術可以使客戶端程序很容易部署到各種移動設備上.
本研究設計的校園移動信息查詢系統是一個典型的移動電子商務系統,它基于J2ME與J2EE技術實現移動客戶端訪問服務器端,即使移動設備功能受限,但客戶端通過無線網絡仍然可以實現各種復雜的應用.
J2EE技術用于服務器端,其典型的架構分為3層:表示層(Presentation)、業務邏輯層(Business logic)及持久化層(Infrastructure)[2],其框架如圖2所示.

圖2 服務器端框架圖
J2ME客戶端的訪問通過無線和有線網絡轉發到J2EE端,借助于J2EE端的服務器來處理用戶的請求,并把處理結果返回到J2ME端.
J2ME技術提供了豐富的聯網功能,支持包括TCP協議、UDP協議以及HTTP協議等主要網絡協議[3-4].在MIDP中處理移動設備網絡連接功能的最主要技術是,javax.microedition.io中各個類和接口,以及java.io包中的各種I/O接口為數據流提供了系統輸入和輸出功能.Web Services通過標準的HTTP協議來傳輸數據,可以很方便地跨越 Intranet或者Intranet網段,通過適當的配置,對Web Services的訪問可以很輕易地穿透防火墻.由于 Socket只有MIDP2.0的手機才支持,綜合考慮通用性與安全性,本系統摒棄了Socket連接的方式,而采用更加通用的HTTP連接方式.
本研究設計的校園移動信息查詢系統的主要功能如圖3所示.
在校園移動信息查詢系統中,數據的傳輸通過移動設備發送數據到無線基站,無線基站將數據再傳送到GPRS/3G/4G網絡中,從而很方便地接入到Internet中,最終到達校園服務器進行會話.
由于本系統采用HTTP協議進行網絡連接,并使用DataInputStream/DataOutPutStream進行數據傳輸.考慮到部分地方需要向服務器端傳輸大量信息,所以在傳輸方法上,系統采用了POST方法,而實際操作中,考慮到通過URL進行傳值的方便性,在絕大多數情況下,優先使用URL進行傳值.對于部分涉及到中文通過URL傳輸造成亂碼的情況,系統采用字符編碼轉換方法進行處理,系統架構如圖4所示.

圖3 校園移動信息查詢系統User Case圖

圖4 系統架構示意圖
2.3.1 客戶端的實現.
用戶登錄時,需要傳入登錄URL、用戶名、密碼,然后通過HttpConnection進行網絡連接,通過DataInputStream和DataOutputStream進行數據通信.在服務器端通過Spring控制轉到相對應的Action調用Service的接口方法進行數據庫的查詢,最終返回查詢結果.移動設備端程序主界面設計并處理與服務器的連接,其核心代碼如下:


2.3.2 服務器端的實現.
本系統服務器端采用 Struts1.3、Hibernate3.2、Spring2.5.6技術組合設計.
(1)Struts的實現.
Struts負責表示層.ActionFormBean接收表單提交的數據,然后通過Action進行處理,再Forward到對應的網頁,這個方法在struts-config.xml中定義, ActionServlet會加載.
具體過程為:表單→提交給ActionServlet→調用ActionForm存儲表單信息(struts-config.xml文件中定義)→根據
Struts配置核心代碼如下:

(2)Spring的實現.
Spring負責業務層,即Service(或Manager).Service為Action提供統一的調用接口、封裝持久層的DAO.Spring對接口方法進行管理的核心代碼如下:


Spring對Hibernate進行管理的核心代碼如下:

(3)Hibernate的實現.
Hibernate負責持久化層,完成數據庫的增刪查改操作,提供OR/Mapping.對象的調用流程是:客戶端→Action→Service→DAO→Hibernate.數據的流向是通過DataInputStream或Requset接受用戶的數據,在Action中將數據取出,封裝成VO或PO,再調用業務層的 Bean類,完成各種業務處理后再通過DataOutputStream輸出結果.而業務層Bean收到這個PO對象之后,會調用DAO接口方法,進行持久化操作.
2.3.3 系統的實現.
通過以上步驟的設計,具體實現了校園移動信息查詢系統,系統程序的運行結果如圖5所示.

圖5 校園移動信息查詢系統運行結果圖
移動通訊設備的普及使移動信息系統得到廣泛應用,這類系統為經常外出的客戶進行信息查詢提供了極大方便.有理由相信,隨著移動信息技術的迅猛發展,利用移動通訊設備開展的各類電子商務將主導著電子商務的發展方向.
[1]彭政.基于J2ME和J2EE的移動學習平臺研究與設計[J].科技廣場,2010,23(6):28-30.
[2]張軍.基于J2EE技術實現J2ME嵌入式系統訪問的網絡數據庫[J].考試周刊,2010,4(30):153-154.
[3]楊麗萍,王薇.基于手機平臺的教學信息系統的研發[J].長春大學學報,2009,19(8):15-17.
[4]吳江壽,劉世洪,蘇曉路.基于JavaME與WAP的移動信息系統實現[J].微計算機信息,2009,25(12):127-128, 136.