吳江壽 劉世洪 蘇曉路 朱海鵬 代 蓉
[摘 要] 從企業(yè)移動業(yè)務拓展角度出發(fā),介紹了一種基于JavaME與Web Services的系統(tǒng)架構,實現(xiàn)了服務端信息點播服務的構建與發(fā)布機制,并參照JSR 172( JavaME Web Services Specification 172),研發(fā)了支持遠程Web服務訪問的移動客戶端應用程序,以期為企業(yè)構建移動信息服務平臺提供一種現(xiàn)實、可行的思路。
[關鍵詞] 企業(yè)移動應用; JavaME;Web服務; JSR 172
[中圖分類號]F270.7;TP311[文獻標識碼]A[文章編號]1673-0194(2009)01-0062-03
1 引 言
隨著移動通信技術的高速發(fā)展,以及移動設備的廣泛普及,以手機為代表的移動產(chǎn)品軟硬件環(huán)境也變得紛繁復雜,如手機操作系統(tǒng)就包括Symbian、Palm OS、Linux、Windows Mobile等,使得特定移動平臺開發(fā)的解決方案在部署時存在移植性問題,只能局限于小范圍應用。同時,由于廠商和開發(fā)者對企業(yè)級應用的關注度日益提高,探索“如何使企業(yè)服務覆蓋到移動客戶端,而不僅僅是Web瀏覽器與PC客戶端”,以及“如何使移動客戶端接入原有企業(yè)服務的成本最低”等問題就顯得尤為必要。據(jù)一份調查報告顯示,現(xiàn)在每出廠100臺移動電話中,有87臺是支持Java的[1]。因此,基于Java平臺在移動電話上的廣泛部署,以及Java應用程序“一次編寫,到處運行”的優(yōu)點,開發(fā)支持Web服務的移動客戶端應用程序,連通企業(yè)提供的Web服務,有助于降低企業(yè)移動信息服務系統(tǒng)開發(fā)成本,提高信息資源利用率。
2JavaME平臺上的Web服務
2. 1系統(tǒng)架構
JSR 172規(guī)定了標準化客戶端技術,允許 JavaME應用程序在典型Web服務架構上使用遠程服務,如圖1所示。
系統(tǒng)采用MVC軟件設計模式,由用戶層、表示層、應用層和數(shù)據(jù)層組成的4層客戶服務器體系結構,很好地表達用戶與系統(tǒng)的交互過程,有利于軟件的工程化管理,具有很好的擴展性與靈活性。該Web服務架構由3個元素構成:①WSA(Web Services Architecture)無線設備上的網(wǎng)絡感知應用程序。該應用程序包括使用JSR 172運行庫與網(wǎng)絡進行通信的JSR 172存根。②無線網(wǎng)絡和Internet以及對應的通信和數(shù)據(jù)編碼協(xié)議,包括二進制協(xié)議、HTTP 以及 SOAP/XML。③Web 服務器,扮演服務提供者的角色,通常在一個或多個防火墻和代理網(wǎng)關后面。Web 服務器通常提供對專用網(wǎng)絡上后端應用程序和服務器的訪問[2]。
2. 2JavaME對Web服務的遠程訪問
JSR 172的發(fā)布,把Web服務擴展到了Java ME,通過定義一個XML解析器,彌補Java ME不能解析XML的不足?;贘SR 172的應用程序本身是一個基于移動信息設備配置文件(Mobile Information Device Profile,MIDP)或個人基礎配置文件(Personal Basis Profile,PBP)的智能客戶機,不僅可以使用JAXP子集API來處理XML文檔,而且還可以使用JAX-RPC子集API來實現(xiàn)Web服務。對于像手機、PDA這樣的移動設備,應用程序和JSR 172存根通常駐留在設備內(nèi)存中,而所有JSR 172元素連同基礎配置文件和配置一起嵌入到設備中。
JavaME客戶端實現(xiàn)過程包括獲取WSDL文檔、生成JAX-RPC存根類、通過該存根類實現(xiàn)對Web服務的遠程訪問,具體步驟如圖2所示。
3 實例分析
本文研究以移動信息點播服務為例,將移動客戶端MIDlet(是指運行在MIDP設備上的應用程序)分為主程序與信息點播服務兩大模塊。其中,主程序模塊負責同Web服務器的數(shù)據(jù)交互,獲取服務器傳送的xml文件并解析。信息點播服務模塊負責顯示主程序模塊所解析的具體信息。
實現(xiàn)過程主要包括客戶端界面實現(xiàn)與服務端Web服務部署兩部分??蛻舳嘶贘ava ME技術,服務端采用數(shù)據(jù)源和Web Services技術提供服務。
3. 1服務端服務創(chuàng)建與發(fā)布
服務端的服務是通過Web Services技術提供服務。部署Web服務時,采用Resin服務器,選用Glue來配置Web Services環(huán)境,實現(xiàn)客戶端與服務器端連接、通信以及數(shù)據(jù)交互。
(1)在服務端創(chuàng)建3個類:DataSourceSupport類、OrderNews類和ShowNews類,為客戶端提供服務。其中,DataSourceSupport類用于提供數(shù)據(jù)源的連接;ShowNews類則是根據(jù)用戶選擇的信息標題,返回具體信息內(nèi)容;OrderNews類是根據(jù)用戶選擇的信息查看類型檢索數(shù)據(jù)庫,并返回檢索到的信息標題,該類的核心代碼如下:
public class OrderNews{//檢索信息標題
private DataSource ds;
public OrderNews() {
//定義DataSourceSupport類對象建立數(shù)據(jù)庫連接
DataSourceSupport dss = DataSourceSupport.getInstance();
ds = dss.getDataSource();
}
public String[] getTitle(String k,String date) {
//根據(jù)消息類型檢索數(shù)據(jù)庫,并返回結果
String sql = null;
String key = k;
sql = "select * from newsinfo where title like ' %" + key + "%' ";
if (sql == null) {
return new String[0];
} else {
//調用searchBySql()函數(shù)執(zhí)行sql語句,并返回結果
return searchBySql(sql);
}
……
}
(2)創(chuàng)建兩個與提供Web Services服務類名一致的xml文件OrderNews.xml和ShowNews.xml,用于描述提供的服務。OrderNews.xml文件的主要代碼如下:
xml version=' 1.0' ?