首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

使用 DB2 Everyplace 構建 MIDP 移動應用程式完整指南

     編輯:DB2 教學

前言

DB2 Everyplace 是 IBM 普適運算解決方案的核心組件,它讓銷售人員、稽核人員、技術支援工程師、醫師等高機動性專業人員,能在辦公室外隨時存取關鍵業務數據。該產品最大亮點在於對各類行動裝置的廣泛支援,本文將深入探討如何針對 MIDP (Mobile Information Device Profile) 相關裝置,開發基於 DB2 Everyplace 的應用程式。

開發與測試環境需求

伺服器端配置

同步資料來源與 DB2 Everyplace 同步伺服器建議部署於不同實體機器,但為開發測試方便,本文採用單機環境:

  • 作業系統:Windows 2000 SP3 (英文版)
  • 資料庫:DB2 Universal Database Enterprise Edition V7.2 + FixPak 9
  • 應用伺服器:WebSphere Application Server Advanced Enterprise Edition V4.0.2
  • 同步軟體:DB2 Everyplace Enterprise Edition V8.1 + FixPak 2

注意:實際大量數據生產環境中,同步資料來源與同步伺服器應分開部署。同步資料來源可採用 DB2 UDB、Oracle、MS SQL Server 等,但 DB2 Everyplace 同步伺服器本身僅支援 DB2 UDB V7.2.x 版本。

行動裝置與模擬器

  • Pocket PC 2002 (測試機型:Compaq iPaq H3870)
  • Palm OS 4.0
  • 其他 MIDP 裝置:WTK V1.04 模擬器、WebSphere Studio Device Developer V5.5 內建 MIDP 模擬器

目標裝置需預先安裝 DB2 Everyplace 同步客戶端軟體與 WebSphere Micro Environment (WME) V5.5 執行環境。

開發工作站

採用 WebSphere Studio Device Developer (WSDD) V5.0 作為整合開發環境 (IDE),搭配 WebSphere Micro Environment (WME) V5.5 作為執行測試環境。WSDD 專為行動裝置開發設計,可作為 WebSphere Studio Application Developer 的外掛模組使用。

MIDP 技術概覽

MIDP (Mobile Information Device Profile) 定義了針對行動資訊裝置 (主要為智慧型手機與具無線通訊功能的 PDA) 的圖形介面、輸入處理、持久化儲存、無線網路連線上的訊息處理 (如簡訊)、安全性等 API,並充分考量螢幕大小與記憶體限制。本文假設讀者已具備基礎 MIDP 開發知識。

基於 DB2 Everyplace 的 MIDP 應用程式開發

架構差異說明

DB2 Everyplace V8.1 官方文件主要針對 Sun Wireless Toolkit (WTK) 環境、Apache Tomcat 4.0.x 應用伺服器、一般 MIDP 手機裝置。但實務專案中,作者成功驗證了在 WME 5.5 環境、WebSphere Application Server V4.0.2、Pocket PC / Palm OS 裝置 上運行,並相容於 WTK 手機模擬器。

伺服器端安裝與配置步驟

1. 建立應用程式伺服器

執行腳本 \\DB2Everyplace\\Server\\installableAPPS\\nt\\dsy_was40_install.bat,在 WebSphere 節點下建立應用程式伺服器。指令格式:

dsy_was40_install.bat "WAS安裝目錄" "WAS節點名" "%DSYINSTDIR%" "%DSYSQLLIBINSTDIR%"

常見問題排解:若 IBM_WS_Admin 服務無法啟動,通常因 WAS 需使用 JDBC 2.0。解決步驟:停止「DB2 UDB JDBC Applet Server 服務」→ 執行 SQLLIB\\Java12\\usejdbc2.bat 升級 JDBC → 重啟該服務。

2. 安裝企業應用程式

安裝「IBM DB2 Everyplace 企業應用程式」至步驟 1 建立的應用程式伺服器,並重新產生 Web 伺服器外掛模組。

3. 配置 Web 容器與工作階段管理

在應用程式伺服器屬性中進行關鍵設定:

  • Web 容器服務:設定通訊埠號 (預設 9080)
  • 工作階段管理器服務:啟用 Enable URL rewriting,不勾選 Enable SSL ID tracking 與 Enable Cookies

修改完成後點擊「更新」儲存。

4. 部署 MIDP 同步 Servlet

手動配置業務邏輯 Servlet:

  1. 複製 FilterServlet.jar 至 ...\\IBM_DB2_Everyplace.war\\WEB-INF\\lib
  2. 編輯 web.xml,在 <servlet> 區塊加入:
    <servlet id="Servlet_20"><servlet-name>MIDP Filter Servlet</servlet-name><servlet-class>com.ibm.mobileservices.servlet.ServletDriver</servlet-class></servlet>
  3. 在 <servlet-mapping> 區塊加入:
    <servlet-mapping id="ServletMapping_20"><servlet-name>MIDP Filter Servlet</servlet-name><url-pattern>/db2efilter/*</url-pattern></servlet-mapping>
  4. 儲存並重新啟動應用程式伺服器

5. 驗證安裝

瀏覽器訪問 https://syncservername:9080/db2e/db2eFilter,若顯示成功畫面即表示配置完成。

客戶端執行環境部署

將 WME 5.5 部署至目標裝置,詳細步驟請參閱 WSDD 線上文件。

同步引擎客戶端 API 呼叫流程

DB2 Everyplace 為 MIDP 提供獨立的同步引擎介面,基本呼叫步驟如下:

  1. 匯入套件:com.ibm.mobileservices.isync.*, com.ibm.mobileservices.isync.event.*, com.ibm.mobileservices.isync.midp.*
  2. 實作 ISyncListener 介面的 eventIssued 方法以捕獲同步事件
  3. 取得 MIDPISyncProvider 實例
  4. 從 Provider 取得同步服務 (SynchronizationService) 實例
  5. 從 Service 取得設定存儲 (ConfigurationStore) 實例
  6. 從 ConfigurationStore 取得同步驅動程式 (SynchronizationDriver) 實例
  7. 註冊應用程式監聽器
  8. 對所有已啟用的訂閱集執行同步,持續檢查傳回值與狀態
  9. 關閉並釋放 MIDPISyncProvider 資源

完整範例程式碼請參閱附件 1。

本地資料存取介面 (FastRecordStore)

MIDP 裝置採用 RMS (Record Management System) 作為持久化儲存。DB2 Everyplace V8.1 在 RMS 基礎上封裝了更易用的 FastRecordStore 介面,核心概念:

  • 每個 FastRecordStore 實例對應一張資料表
  • 表頭儲存 TableMetaData 物件描述結構描述
  • 提供依結構描述操作記錄的便利方法

基本開發步驟

  1. 從 MIDPISyncProvider 取得資料表結構描述物件 (TableMetaData)
  2. 開啟或建立資料表實例 (FastRecordStore)
  3. 建立記錄索引以提升存取效能
  4. 建立 FastRecordEnumeration 遍歷記錄
  5. 結合 TableMetaData 操作每筆記錄,常用串流類別:
    ByteArrayInputStream, DataInputStream, ByteArrayOutputStream, DataOutputStream

記錄結構與旗標位元

每筆記錄開頭有一個旗標位元組 (Flag Byte),初始為 0,開發者可設為 ISync.ROW_ADDED, ISync.ROW_CHANGED, ISync.ROW_DELETED 等值,同步引擎依旗標執行插入/更新/刪除。欄位值依結構描述順序排列,可為空的欄位前會有一個布林旗標指示是否為 NULL。

日期時間類型特殊處理

本地儲存採用位元操作編碼:

  • DATE:32 位整數,高 16 位為年,中 8 位為月,低 8 位為日
  • TIME:32 位整數,高 16 位為時,中 8 位為分,低 8 位為秒
  • TIMESTAMP:64 位長整數,前 32 位為 DATE,後 32 位為 TIME

詳細解析程式碼請參閱附件 2。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved