在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于J2ME的防汛信息系統(tǒng)的研究

            基于J2ME的防汛信息系統(tǒng)的研究

            作者: 時(shí)間:2012-04-16 來(lái)源:網(wǎng)絡(luò) 收藏

            在本系統(tǒng)中,客戶端和服務(wù)器之間主要通過(guò)HTTP協(xié)議進(jìn)行通信,工作流程如下:

            (1) 用戶啟動(dòng)手機(jī)上的MIDlet進(jìn)入登錄界面,輸入用戶名和密碼進(jìn)行登錄。MIDlet用Connector類(lèi)的open方法建立一個(gè)到服務(wù)器端的連接,并把這個(gè)連接強(qiáng)制轉(zhuǎn)換成為HttpConnection類(lèi)型。

            (2) 客戶端用HttpConnection類(lèi)的openInputStream方法和openOutputStream方法來(lái)返回輸入輸出流并通過(guò)它們來(lái)發(fā)送請(qǐng)求和接收響應(yīng)信息。

            (3) 服務(wù)器端接收到客戶端的連接請(qǐng)求后,把它封裝成一個(gè)HttpServletRequest對(duì)象,調(diào)用相應(yīng)的Servlet,通過(guò)EJB或JavaBean訪問(wèn)數(shù)據(jù)庫(kù),并把處理結(jié)果返回客戶端的MIDlet。

            (4) 客戶端MIDlet使用輸入流接收服務(wù)器端返回的結(jié)果,根據(jù)返回的是”station”(測(cè)站)、”person”(普通用戶)還是”none”(無(wú)此用戶)而在屏幕上呈現(xiàn)不同的界面。

            (5) 登錄成功后,MIDlet重新建立HttpConnection來(lái)進(jìn)行數(shù)據(jù)更新或查詢(xún)操作。

            四、技術(shù)難點(diǎn)和解決方案

            4.1 用戶定制信息的接收

            用戶定制的信息有兩種發(fā)送的方式:

            (1)定時(shí)發(fā)送。用于把用戶定制的日常信息每天定時(shí)發(fā)送給用戶。

            (2)緊急發(fā)送。當(dāng)出現(xiàn)緊急汛情時(shí)即時(shí)把信息發(fā)送到相關(guān)的責(zé)任人。

            在客戶端,對(duì)相關(guān)信息的接收是通過(guò)的PUSH注冊(cè)功能來(lái)實(shí)現(xiàn)的。Push技術(shù)是一種能夠使得Midlet應(yīng)用程序不需要用戶的操作而自行啟動(dòng)運(yùn)行的機(jī)制。在通常的網(wǎng)絡(luò)連接中,是客戶端主動(dòng)去連接服務(wù)器,服務(wù)器接受請(qǐng)求并把處理結(jié)果返回客戶端。而Push技術(shù)不同,它不需要應(yīng)用程序通過(guò)“拉(pull)”的方式通過(guò)網(wǎng)絡(luò)取得數(shù)據(jù),客戶端需要的數(shù)據(jù)會(huì)被主動(dòng)“推(push)”向客戶端的移動(dòng)設(shè)備。當(dāng)移動(dòng)設(shè)備接收到信息時(shí),相關(guān)的Midlet會(huì)被激活并開(kāi)始運(yùn)行,處理發(fā)送過(guò)來(lái)的數(shù)據(jù)。

            服務(wù)器端使用Socket可以自動(dòng)向與其相聯(lián)的客戶端發(fā)送數(shù)據(jù),這就為Push技術(shù)提供了保證。先由客戶端的 MIDlet注冊(cè)好服務(wù)類(lèi)型,地址,端口號(hào),當(dāng)服務(wù)器端檢測(cè)到有緊急情況發(fā)生或用戶定制的情況發(fā)生時(shí),就會(huì)將相應(yīng)的消息通過(guò)Socket發(fā)送到客戶端,客戶端會(huì)啟動(dòng)相應(yīng)的MIDlet對(duì)該消息進(jìn)行相應(yīng)處理。

            平臺(tái)從MIDP2.0開(kāi)始增加了對(duì)Push注冊(cè)的支持。Push機(jī)制可以通過(guò)如下兩種方式激活Midlet:一種是接入的網(wǎng)絡(luò)連接的,當(dāng)客戶端接收到網(wǎng)絡(luò)Push來(lái)的信息后就自動(dòng)啟動(dòng)Midlet運(yùn)行;另一種是計(jì)時(shí)器的警告通知,當(dāng)。Push 注冊(cè)機(jī)制可以使MIDlet 自動(dòng)運(yùn)行,運(yùn)行方式有兩種:一種定時(shí)技術(shù),當(dāng)?shù)竭_(dá)特定時(shí)間,程序就會(huì)運(yùn)行;另一種基于網(wǎng)絡(luò),當(dāng)設(shè)備受到網(wǎng)絡(luò)推送的信息時(shí),可以啟動(dòng)程序運(yùn)行。本系統(tǒng)采用第一種方式來(lái)實(shí)現(xiàn)定制信息的發(fā)送。

            要在客戶端使用Push技術(shù),必須事先進(jìn)行Push注冊(cè)。Push注冊(cè)有兩個(gè)方法:靜態(tài)注冊(cè)和動(dòng)態(tài)注冊(cè)。靜態(tài)注冊(cè)需要將 Push注冊(cè)信息添加到JAD文件中,在Midlet Suite安裝時(shí)完成注冊(cè)。靜態(tài)注冊(cè)的缺點(diǎn)是必須通過(guò)Midlet Suite安裝過(guò)程來(lái)實(shí)現(xiàn),一但安裝好后就無(wú)法添加新的注冊(cè),同時(shí)如果要取消Push注冊(cè),也必須卸載Midlet Suite。動(dòng)態(tài)注冊(cè)是MIDlet通過(guò)Push Registry接口API來(lái)實(shí)現(xiàn)的,可以在程序運(yùn)行時(shí)添加或取消Push注冊(cè),增加了靈活性。本文采用了動(dòng)態(tài)注冊(cè)的方法。

            在動(dòng)態(tài)注冊(cè)時(shí)MIDlet需要告訴AMS它所要連接的服務(wù)器的IP地址、端口號(hào)和要啟動(dòng)的MIDlet類(lèi),實(shí)現(xiàn)代碼如下:

            String midletClassName=”com.water.PushInfo”;//這是自動(dòng)運(yùn)行處理數(shù)據(jù)的Midlet
            String ConnectionURL =”socket://:6789”;
            String AllowedSender=”*”;//*表示允許接收任意地址發(fā)送的信息
            PushRegistry.registerConnection(midletClassName, ConnectionURL, AllowedSender);
            …..

            這樣,當(dāng)AMS監(jiān)測(cè)到端口號(hào)為6789的Socket服務(wù)器發(fā)送來(lái)的數(shù)據(jù)后,就會(huì)啟動(dòng)com.water包下的PushInfo來(lái)處理這些數(shù)據(jù)。

            取消注冊(cè)可以使用PushRegistry.unregisterConnection(ConnectionURL)來(lái)完成。

            4.2 數(shù)據(jù)庫(kù)連接池技術(shù)

            本例采用了數(shù)據(jù)庫(kù)連接池技術(shù)。傳統(tǒng)的Web應(yīng)用程序進(jìn)行數(shù)據(jù)庫(kù)操作時(shí)一般要經(jīng)過(guò)(1)建立數(shù)據(jù)庫(kù)連接;(2)進(jìn)行數(shù)據(jù)庫(kù)的增加、刪除、修改、查詢(xún)操作;(3)斷開(kāi)數(shù)據(jù)庫(kù)連接這三個(gè)步驟。這種方式有一個(gè)重要的缺點(diǎn):要為每個(gè)Web請(qǐng)求建立一次數(shù)據(jù)庫(kù)連接并對(duì)其進(jìn)行管理,這些操作都會(huì)耗費(fèi)大量的時(shí)間和資源。數(shù)據(jù)庫(kù)連接池的基本思想是預(yù)先建立一些連接,放置在內(nèi)存對(duì)象中以備使用。當(dāng)程序中需要建立數(shù)據(jù)庫(kù)連接時(shí),只需從內(nèi)存中取出一個(gè)來(lái)用而不用重新建一個(gè)連接。同樣,使用完畢后,只需將此連接放回到內(nèi)存中即可,而連接的建立和斷開(kāi)都由連接池自身來(lái)管理。Weblogic服務(wù)器提供了圖形化的界面來(lái)建立數(shù)據(jù)庫(kù)連接池,設(shè)置比較簡(jiǎn)單。建立好數(shù)據(jù)庫(kù)連接池和數(shù)據(jù)源后,就可以在Servlet中通過(guò)JavaBean或EJB來(lái)調(diào)用,代碼如下:

            Hashtable ht = new Hashtable();
            ht.put(Context.INITIAL_CONTEXT_FACTORY,weblogic.jndi.WLInitialContextFactory);
            ht.put(Context.PROVIDER_URL,t3://localhost:7001);
            try
            {
            Context ctx=new InitialContext(ht);
            DataSource ds=(DataSource)ctx.lookup(WaterJNDI);
            Connection con=ds.getConnection();

            }catch(Exception e){

            }



            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉