<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

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

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

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

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

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

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

          4.1 用戶定制信息的接收

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

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

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

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

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

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

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

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

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

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

          取消注冊可以使用PushRegistry.unregisterConnection(ConnectionURL)來完成。

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

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

          }



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();