前言:企業 Java 與無線技術的結合
若企業已建立多層企業 Java 應用,其實距離無線未來比想像更近。本文透過範例應用,展示如何以最少資源將現有 EJB 元件接入無線網路。關鍵在於:重用既有 EJB、修改 Servlet、新增 WML/WMLScript 頁面,即可實現質的飛躍。
背景知識:J2EE 與 WAP 架構對比
傳統 J2EE 應用結構
典型 J2EE 應用中,JSP/Servlet 層負責生成動態 HTML。而在 WAP 應用中,這一層改為生成動態 WML(Wireless Markup Language)頁面。因此遷移時需重寫 JSP,部分情況下也需新增 Servlet,但 EJB 層保持不變,因其與資料呈現無關。
圖 1 - J2EE 應用結構
WAP/J2EE 整合架構
WAP 閘道器負責 WAP 協議棧與 Internet 協議棧的相互轉換。所有來自 WAP 客戶端的請求必須經過 WAP 閘道器才能到達 Web 伺服器。
圖 2 - WAP/J2EE 應用結構
WAP 閘道器部署考量
- ISP 部署:用戶可訪問多站點,但安全性較低
- 企業自建:安全性高,可關閉日誌功能,但用戶需額外設定連線
WAP 應用設計關鍵考量
螢幕顯示限制
建議每卡片顯示 5-7 行,避免過度捲動。最大尺寸視裝置而定。
安全性挑戰
- 部分手機不支援 POST,帳密須用 GET 傳輸,閘道器日誌可能記錄敏感資訊
- WTLS 加密在閘道器端需解密再以 TLS 加密,明文會短暫停留在閘道器記憶體中
- 解決方案:自建閘道器、關閉日誌、或用 WMLScript 實作簡易加密
Session 維持
WAP 客戶端不支援 Cookie,需透過 URL 參數傳遞 Session ID。注意 Session ID 過長可能導致 URL 被視為無效,需縮短 ID 長度。
實戰案例:XYZ 公司行銷人員行動應用
業務場景
行銷人員拜訪客戶時,透過 WAP 裝置查看客戶清單、下訂單、回報狀態。核心目標:減少使用者按鍵次數,適應手持裝置操作限制。
圖 3 - 應用流程圖
核心流程與元件
- Login.jsp / LoginServlet:驗證身分、建立 Session、處理空白輸入驗證(伺服器端驗證)
- MainMenu.jsp:顯示「檢視客戶」與「登出」兩選項
- ClientViewServlet → ClientList.jsp → ClientDetails.jsp:三層分離設計,避免單一 WML 文件過大超出裝置容量限制(如 Nokia 7110 僅 1.3 KB)
- ItemListServlet → ItemList.jsp → PlaceOrder.jsp:商品選擇與下單流程
架構設計原則
- JSP 不直接存取 EJB,透過 Servlet 作為中介
- 分頁載入資料,適應低頻寬環境
- 最小化使用者輸入,僅在登入與輸入採購量時需鍵盤操作
結論與部署建議
- WAP 應用可低成本整合既有 Web 架構,僅需 WAP 閘道器軟硬體
- WML 比 HTML 簡單,轉換成本低
- 除非圖片傳遞關鍵資訊,否則優先提供文字資訊以節省頻寬與費用
- 務必在真實裝置與已部署閘道器上完整測試,模擬器無法完全替代
- 確認閘道器支援的 WAP/WML 版本,避免版本不相容