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

J2ME Web 服務 API (JSR 172) 深度解析(三):實戰調用範例與最佳實踐

     編輯:J2ME

遠端服務調用完整範例

生成、編譯、部署 Stubs 後,調用遠端服務極為簡單:實例化 Stub → 設定端點 URL 與 Session 維持屬性 → 在獨立執行緒中呼叫方法。

public class StockMIDlet extends MIDlet implements CommandListener {
    private EmployeeService_Stub service;
    private String serviceURL = "https://example.com/ws/employee";

    public void startApp() {
        service = new EmployeeService_Stub();
        service._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY, serviceURL);
        service._setProperty(Stub.SESSION_MAINTAIN_PROPERTY, Boolean.TRUE);
        // 顯示主畫面...
    }

    public void commandAction(Command c, Displayable d) {
        if (c == GET_EMP_CMD) {
            new Thread(new GetEmpTask()).start(); // 必須另開執行緒
        }
    }

    class GetEmpTask implements Runnable {
        public void run() {
            try {
                EmployeeInfo info = service.getEmployeeInfo(empId);
                // 更新 UI 顯示員工資訊
                form.append("Name: " + info.firstname + " " + info.lastname);
                form.append("Status: " + info.status);
                display.setCurrent(form);
            } catch (RemoteException e) {
                // 處理 RPC 異常
            } catch (Exception e) {
                // 處理其他異常
            }
        }
    }
}

關鍵最佳實踐

  • 執行緒隔離:所有阻塞式遠端調用必須在非事件執行緒執行,避免 UI 凍結。
  • 異常處理:捕捉 RemoteException(通訊/序列化錯誤)與一般 Exception。
  • Session 管理:設定 SESSION_MAINTAIN_PROPERTY 維持會話狀態(如需)。
  • 效能考量:無線頻寬有限,盡量縮減 SOAP 封包大小;考慮二進制編碼優化(透明於應用)。

結語

JSR 172 將企業級 Web 服務能力帶入資源受限的 J2ME 終端。掌握 JAX-RPC 子集、Stub 生成流程與執行緒模型,即可快速構建消費 Web 服務的移動應用。

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