[摘要]隨著無線通信技術(shù)的不斷發(fā)展和提高,在PC機(jī)上完成的物流信息管理系統(tǒng)在物流企業(yè)提供服務(wù)的過程中限制了信息交流的及時(shí)性?;贘2ME的java手機(jī)作為無線終端設(shè)備具有隨身攜帶的方便性;因此把J2ME技術(shù)應(yīng)用于物流信息化建設(shè)中更是一種全新的思路?;贘2ME的物流信息管理系統(tǒng)能大大提高物流企業(yè)的工作效率。
[關(guān)鍵詞]J2ME JAVA SERVLET 物流信息
一、前言
進(jìn)入20世紀(jì)90年代以來,在發(fā)達(dá)國(guó)家,現(xiàn)代第三方物流(3PL)作為一個(gè)新興的行業(yè),得到了高速的發(fā)展,引起廣大企業(yè)界和理論界的關(guān)注。而發(fā)達(dá)國(guó)家在提高第三方物流服務(wù)方面主要是通過發(fā)達(dá)的信息技術(shù)和網(wǎng)絡(luò)技術(shù)。我國(guó)在物流信息系統(tǒng)工程的建設(shè)方面尚處于起步階段,與發(fā)達(dá)國(guó)家相比尚有很大差距。能夠綜合運(yùn)用現(xiàn)代信息技術(shù)最新成果的現(xiàn)代物流信息系統(tǒng)在國(guó)內(nèi)少之甚少。但是隨著國(guó)家對(duì)物流業(yè)重要性的認(rèn)識(shí)及國(guó)內(nèi)信息技術(shù)的發(fā)展,物流信息系統(tǒng)的重要性已經(jīng)被各級(jí)政府部門和越來越多的企業(yè)所重視?;贘2ME的java手機(jī)軟件開發(fā)是目前國(guó)內(nèi)外一項(xiàng)先進(jìn)的技術(shù),相信隨著互聯(lián)網(wǎng)應(yīng)用技術(shù)的廣泛普及和無線終端設(shè)備技術(shù)的不斷提高,無線互聯(lián)網(wǎng)必將是未來的發(fā)展方向,同時(shí)物流信息化建設(shè)也是全球關(guān)注的熱點(diǎn),尤其是國(guó)內(nèi)的信息化建設(shè)必將在未來十幾年中蓬勃發(fā)展,因此把J2ME技術(shù)應(yīng)用于物流信息化建設(shè)中更是一種全新的思路。
二、J2ME技術(shù)在物流信息管理中的優(yōu)勢(shì)
一般的物流信息系統(tǒng)都是在PC機(jī)上操作完成的,而這種固定操作方式在物流企業(yè)提供服務(wù)的過程中限制了信息的交流。例如,客戶最關(guān)心的是物品的安全性、準(zhǔn)確性和及時(shí)性,希望可以隨時(shí)隨地的查詢他關(guān)心的信息;物流企業(yè)的采購員可能想在路途中知道當(dāng)前倉庫中的動(dòng)態(tài)存貨量等等。因此,需求是無限的,無法預(yù)知系統(tǒng)用戶在什么時(shí)刻需要獲得服務(wù)。而無線通信技術(shù)的應(yīng)用延伸了客戶端用戶對(duì)空間位置和時(shí)間的需求,而Java手機(jī)的普遍應(yīng)用使這些需求變?yōu)楝F(xiàn)實(shí)。物流企業(yè)在信息系統(tǒng)建設(shè)中為了提高客戶服務(wù)水平應(yīng)該增加Java手機(jī)軟件系統(tǒng)。此系統(tǒng)可以單獨(dú)運(yùn)行而且是運(yùn)行在客戶的手機(jī)上的,因?yàn)槭謾C(jī)是隨身攜帶的無線通信設(shè)備,通過Java手機(jī)下載并運(yùn)行此軟件可以隨時(shí)在線查詢相關(guān)信息了。
三、基于J2ME的物流信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
基于J2ME的物流信息管理系統(tǒng)可選用基于J2ME的HTTP通信協(xié)議的方案。基于HTTP協(xié)議的方案不需要通過短信網(wǎng)關(guān)進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā),它直接使用HTTP協(xié)議,通過提供的網(wǎng)絡(luò)地址、服務(wù)端口進(jìn)行尋址,找到相應(yīng)的應(yīng)用服務(wù),提出服務(wù)請(qǐng)求。應(yīng)用服務(wù)器根據(jù)請(qǐng)求進(jìn)行相應(yīng)的數(shù)據(jù)處理,將結(jié)果依據(jù)HTTP協(xié)議發(fā)送到手機(jī)客戶端,使得手機(jī)等移動(dòng)手持設(shè)備能以Client/Server方式直接訪問Internet的全部信息,不同的Client訪問不同的文件。
1.總體架構(gòu)設(shè)計(jì)
基于J2ME的物流信息管理系統(tǒng)的總體架構(gòu)見圖1。
圖1系統(tǒng)總體構(gòu)架系統(tǒng)架構(gòu)中,手機(jī)與服務(wù)器的交互方式采用了多層的體系結(jié)構(gòu),和普通PC機(jī)客戶端訪問服務(wù)器的方式幾乎沒有區(qū)別,這也是基于HTTP協(xié)議方案的優(yōu)點(diǎn)之一。為了與遺留的和未來的物流管理信息系統(tǒng)的相兼容(基于J2EE),系統(tǒng)使用J2ME+J2EE的體系結(jié)構(gòu)。J2EE的可擴(kuò)展性、靈活性使它成為了服務(wù)器端事實(shí)上的開發(fā)標(biāo)準(zhǔn),J2ME與J2EE的結(jié)合,使使用者可以在任何時(shí)間、任何地點(diǎn)自由地訪問內(nèi)部網(wǎng)絡(luò)資源。J2ME+J2EE體系結(jié)構(gòu)的示意圖,如圖2所示。
客戶端使用J2ME MIDlet,程序主要由各個(gè)用戶界面組成,并將一些常用的、數(shù)據(jù)量較少的、簡(jiǎn)單的數(shù)據(jù)表存儲(chǔ)在客戶端的數(shù)據(jù)庫中;服務(wù)器端使用JSP,Servlet,EJB等,并使用JDBC與后端數(shù)據(jù)庫相連??蛻舳撕头?wù)器端使用基于HTTP協(xié)議的連接。J2ME將移動(dòng)設(shè)備上的客戶應(yīng)用與后臺(tái)J2EE服務(wù)環(huán)境很好地結(jié)合起來。基于J2ME+J2EE的解決方案可以充分體現(xiàn)Java技術(shù)可移植性、可擴(kuò)展性、易于編程的優(yōu)點(diǎn)。
相對(duì)于一般的信息管理系統(tǒng),本系統(tǒng)的最大特點(diǎn)在于客戶端的設(shè)計(jì)與實(shí)現(xiàn)。本系統(tǒng)的客戶端是基于手機(jī)Java平臺(tái)的,因此在它的設(shè)計(jì)和實(shí)現(xiàn)上比較特殊。而服務(wù)器端的設(shè)計(jì)和實(shí)現(xiàn)相對(duì)來說比較常見一點(diǎn)。
2.客戶端設(shè)計(jì)
滿足物流企業(yè)員工及客戶快速反應(yīng)要求的物流信息管理軟件總體來說至少應(yīng)滿足以下幾點(diǎn)要求。一是采用J2ME技術(shù)的MIDP規(guī)范制作手機(jī)軟件,從而保證軟件的可移植性。二是軟件操作流程要符合手機(jī)通用標(biāo)準(zhǔn),以保證軟件的可推廣性。三是手機(jī)軟件需具備訪問Web數(shù)據(jù)庫的能力,以保證系統(tǒng)的兼容性。四是手機(jī)軟件采用與手機(jī)相同的菜單操作方式,以保證系統(tǒng)的通用性。
客戶端系統(tǒng)的設(shè)計(jì)主要包括兩個(gè)方面:一是實(shí)現(xiàn)物流信息管理系統(tǒng)基本功能的各個(gè)顯示界面(每個(gè)界面都是一個(gè)單獨(dú)的類),二是客戶端與服務(wù)器的網(wǎng)絡(luò)連接。
(1)系統(tǒng)基本功能
系統(tǒng)基本功能的各個(gè)顯示界面都是一個(gè)單獨(dú)的類,各個(gè)界面之間的關(guān)聯(lián)見圖3。
系統(tǒng)所設(shè)計(jì)的類及其功能如下:
WlglMIDlet類是系統(tǒng)的中心類。為系統(tǒng)的初始化、啟動(dòng)、暫停、界面調(diào)度、銷毀、獲取系統(tǒng)信息等提供方法。它本身不具備顯示的能力。
LoginScreen類顯示登陸界面,處理登陸事件。
MainScreen類顯示主界面,響應(yīng)組件事件,對(duì)相應(yīng)信息進(jìn)行處理,準(zhǔn)備進(jìn)入下一步具體的功能。
StockMenu類顯示采購管理主界面,向服務(wù)器提交用戶輸入的數(shù)據(jù)并取得返回?cái)?shù)據(jù),可以使貨物預(yù)入庫。
WarehouseMenu類顯示入庫管理主界面,向服務(wù)器提交用戶輸入的數(shù)據(jù)并取得返回?cái)?shù)據(jù),準(zhǔn)備進(jìn)入結(jié)果界面。
DeliveryMenu類顯示出庫管理界面,向服務(wù)器提交用戶輸入的數(shù)據(jù)并取得返回?cái)?shù)據(jù),準(zhǔn)備進(jìn)入結(jié)果界面。 Transporting類顯示運(yùn)輸管理界面,向服務(wù)器提交用戶的輸入數(shù)據(jù)和查詢數(shù)據(jù),并返回?cái)?shù)據(jù)。
Sell類顯示銷售管理界面,向服務(wù)器提交用戶的輸入數(shù)據(jù)和查詢數(shù)據(jù),并返回?cái)?shù)據(jù)。
SystemsetMenu類顯示系統(tǒng)設(shè)置主界面,響應(yīng)組件事件,對(duì)相應(yīng)信息進(jìn)行處理,準(zhǔn)備進(jìn)入下一步具體的功能。
PWDChange類顯示修改密碼界面,核對(duì)用戶輸入,進(jìn)行密碼修改處理。
HelpScreen類顯示幫助界面。
(2)客戶端與服務(wù)器的網(wǎng)絡(luò)連接網(wǎng)絡(luò)
網(wǎng)絡(luò)連接是客戶端設(shè)計(jì)中的關(guān)鍵問題。在網(wǎng)絡(luò)部分有兩個(gè)重要內(nèi)容,一個(gè)是網(wǎng)絡(luò)的連接,另一個(gè)是客戶端與服務(wù)器端JSP, Servlet的通信。HTTP協(xié)議在MIDP框架和J2EE平臺(tái)間搭建了傳輸?shù)臉蛄骸TTP連接的打開是用javax.microedition.io.Connector.open方法實(shí)現(xiàn)的。這個(gè)方法有一個(gè)表示URL的字符串參數(shù),它采用URL格式表示。
使用上述方法,手機(jī)可以通過HTTP連接和服務(wù)器端進(jìn)行交互。JSP, Servlet通過HTTP協(xié)議建立起與客戶端的、基于請(qǐng)求/回應(yīng)的動(dòng)態(tài)連接模式。MIDP支持HTTP 1.1,使用GET和POST方法進(jìn)行通信,產(chǎn)生HTTP報(bào)頭和數(shù)據(jù)報(bào)。
在手機(jī)和Servlet通信上,選用比較簡(jiǎn)單的DataInputStream.readUTF和DataOutputStream. writeUTF配對(duì)使用的方法。手機(jī)發(fā)送數(shù)據(jù)的方法是在Connection的輸出流中,用DataOutputStream.writeUTF方法依次寫入多個(gè)參數(shù),與之對(duì)應(yīng),Servlet打開請(qǐng)求的輸入流(request.getInputStream)用DataInputStream.readUTF方法來依次讀出。返回的參數(shù)也一樣,Servlet用response. getOutput5tream打開輸出流,并把返回值依次寫入;手機(jī)端打開Connection的輸入流并讀出即可。對(duì)于多個(gè)參數(shù)多個(gè)返回值的情況,只需要多次使用writeUTF和readUTF。
3.服務(wù)器端設(shè)計(jì)
J2EE為企業(yè)開發(fā)提供了豐富的技術(shù)組件。用JDBC為各種異構(gòu)數(shù)據(jù)庫系統(tǒng)提供統(tǒng)一的開發(fā)接口;用EJB封裝業(yè)務(wù)邏輯,并將它們應(yīng)用于后端的企業(yè)信息系統(tǒng);JSP,Servlet提供Web層與客戶端的信息交流、協(xié)調(diào)客戶端和EJB之間的交互。在本系統(tǒng)中,服務(wù)器端與客戶端最直接關(guān)聯(lián)的是Servlet,它用于接收客戶端的請(qǐng)求,對(duì)數(shù)據(jù)庫進(jìn)行讀寫操作,并給客戶端返回相應(yīng)信息。服務(wù)器端對(duì)應(yīng)于客戶端信息交互部分的Servlet代碼框架如下。
public void doGet(HttpServletRequest request, ServletResponse response)
throws IOException,ServletException
{ response.setContentType(“textlhtml; charset=GBK”);//設(shè)置響應(yīng)屬性,接收客戶端請(qǐng)求
InputStream is=request.getInputStream();
DataInputStream dis== new DataInputStream(is);
String to Str=dis.readUTF();String tf2Str=dis.readUTF();//發(fā)送處理后的參數(shù)給手機(jī)
DataOutputStreamdos=new DataOutputStream(response.getOutputStream());
dos.writeUTF(returnl Str);
dos.writeUTF(return2Str);
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
doGet(request,response);
為了實(shí)現(xiàn)在手機(jī)上的大量數(shù)據(jù)信息的獲得和處理,本系統(tǒng)需要將結(jié)構(gòu)比較復(fù)雜、數(shù)據(jù)量比較大的數(shù)據(jù)存儲(chǔ)在后臺(tái)數(shù)據(jù)庫服務(wù)器上。
四、結(jié)論
本文通過對(duì)該系統(tǒng)客戶端及客戶端與WEB服務(wù)器的連接的設(shè)計(jì)與實(shí)現(xiàn)的詳細(xì)闡述,表明J2ME技術(shù)在移動(dòng)式的管理系統(tǒng)中可以成熟應(yīng)用,基于J2ME的物流信息管理系統(tǒng)能大大提高物流企業(yè)的工作效率。
參考文獻(xiàn):
[1]Michael Juntao Yuan著,梁超譯. J2ME移動(dòng)應(yīng)用程序開發(fā)[M].北京:清華大學(xué)出版社,2004.
[2]王鳳斌,段隆振,李向軍,甘最科.UML面向?qū)ο蠼T诠芾硇畔⑾到y(tǒng)中的應(yīng)用.計(jì)算機(jī)與現(xiàn)代化,2005.
[3]盧軍.CJ2ME應(yīng)用程序開發(fā)手機(jī)、PDA程序開發(fā)捷徑.中國(guó)鐵道出版社,2002.
[4]James Keogh著,潘穎譯.J2ME開發(fā)大全[M].北京:清華大學(xué)出版社.2004.
(作者單位:山東交通學(xué)院)