首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

J2ME 平台實現 SOAP 協議:基於 KXML 解析器與 JSR 172 規範

     編輯:J2ME

背景

嵌入式裝置 (J2ME) 需接入企業 SOA 架構,核心挑戰:

  1. J2ME 基礎類庫無 SOAP 支援。
  2. CLDC/MIDP 受限於記憶體與處理器,資源極其有限。
  3. 需處理 XML (SOAP 訊息封裝)。

J2ME 架構回顧

  • 配置:CLDC (手持裝置)、CDC (機頂盒等)。定義最小 JVM 與核心類庫。
  • 配置檔:MIDP (手機)、PDAP (PDA)、Foundation/ Personal Profile (CDC) 等,提供特定領域 API。

SOAP 協議要點

  • XML 編碼的輕量級 RPC 協議,透過 HTTP 傳輸,易穿透防火牆。
  • 訊息結構:Envelope (Header 可選 + Body 必選),Body 含方法呼叫與參數 (Section 5 編碼)。

J2ME 實現 SOAP 客戶端關鍵技術

1. 資料類型映射

J2ME 缺少部分 Java SE 類型 (如 BigDecimal、完整 Collections),僅用基本類型組合模擬複雜類型。

2. XML 解析器選擇

KXML DOM 範例


Document doc = new Document();
XMLParser parser = new XMLParser(new InputStreamReader(is));
doc.parse(parser);
// 遍歷
Element root = doc.getRootElement();
for (int i=0; i

JSR 172 (J2ME Web Services) 規範

  • 提供兩個可選包:JAX-RPC 子集 (同步 RPC 呼叫,~25-30KB) + SAX 解析器 (~35KB)。
  • 建立 SAXParserFactory → SAXParser → parse(InputStream, DefaultHandler)。
  • 擴展 DefaultHandler 覆寫 startElement/endElement/characters 等事件方法,以堆疊追蹤標籤層級並建構物件模型。

代碼片段:SAX Handler


class BasicHandler extends DefaultHandler {
    Vector phones = new Vector();
    Stack tagStack = new Stack();

    public void startElement(String uri, String local, String qName, Attributes attrs) {
        tagStack.push(qName);
        if ("phone".equals(qName)) phones.addElement(new Phone());
    }
    public void endElement(String uri, String local, String qName) {
        tagStack.pop();
    }
    public void characters(char[] ch, int start, int len) {
        String tag = (String) tagStack.peek();
        // 根據 tag 將字串填入當前 Phone 物件屬性
    }
    public void endDocument() { /* 顯示解析結果 */ }
}

總結

透過 KXML 或 JSR 172 SAX 解析器擴展 J2ME XML 處理能力,配合基本類型模擬 SOAP 編碼,可讓 MIDP 裝置無縫呼叫企業 Web Services,解決嵌入式數據來源不足、擴展應用範圍。

本文來自編程入門網:原文連結

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
解析器特點適用性
DOM樹狀記憶體、易遍歷記憶體較大裝置 (CDC)
SAX事件驅動、低記憶體CLDC/MIDP 首選
KXML (Pull)極輕量 (~25KB)、支援 DOM/自有 Pull API強推薦用於 MIDP