前言:從遺產資產到可重用服務
大型機上沉澱數十年的 COBOL/SQL 存儲過程,封裝核心業務邏輯並直連 VSAM、IMS、CICS、MQ 等異構資源。IBM Data Web Services (DWS) 讓這些資產以標準 SOAP/REST 介面對外公開,無需重寫代碼,配合 XSLT 更可秒變 HTML Web 應用,實現 SOA 與傳統開發的雙贏。
存儲過程類型與優勢回顧
- Native SQL Procedure:純 SQL 撰寫,效能最佳,僅存取 DB2 資源。
- External Procedure (C/Cobol/PL/I/Java):可呼叫既有子程式、存取非 DB2 資源 (VSAM/QSAM/IMS/MQ/CICS),重用遺產代碼。
共同優點:減少網路來回、權限最小化 (僅需 EXECUTE 權限)、簡化客戶端開發、WLM 管理下具高可用與擴展性。
業務場景:銀行帳戶查詢三部曲
三個既有存儲過程:
- ListCustomer:依姓名/編號/生日模糊查詢,回傳客戶清單。
- AccountSummary:給定客戶號,回傳帳戶摘要清單。
- AccountDetail:給定帳戶號,回傳詳細交易狀態。
Call Center / Bank Branch 呼叫 1→2→3;Internet Banking 登入後直接呼叫 2→3。介面定義見圖:

DWS 執行環境與處理流

- Client (SOAP UDF / Data Studio / 瀏覽器) 發送 SOAP/HTTP 請求。
- WebSphere Application Server for z/OS (WAS) 接收,轉交 DWS 通用 Servlet。
- Servlet 解析 SOAP → JDBC (Type 2/4) 呼叫
CALL schema.proc(...)。
- DB2 執行存儲過程,回傳結果集。
- Servlet 封裝為 XML 回應 Client。
Data Studio Developer 圖形化發布全流程
- 連線:Data Source Explorer 建立 DB2 for z/OS 連線 (圖 6-7)。
- 瀏覽存儲過程:列出目標 Schema 下的 Procedure (圖 8)。
- 建立 Data Development Project:
Data_Account_Inquiry (圖 9)。
- 新增 Web Service Project:
AccountInquiry (圖 10)。
- 拖曳存儲過程至 Web Service:自動生成操作與
CALL 語句 (圖 11-13)。
- Build & Deploy → 產生 WAR:勾選包含 Test Client (圖 14-15)。
- 取得 WAR 路徑:Navigator → Properties (圖 16)。
WAS for z/OS 安裝與測試
- ISC 定義 JNDI Data Source:
jdbc/DBLN (Type 4, DB2 Location RDBNDBLN, Port 446)。
- Applications → Install New Application 上傳 WAR。
- Enterprise Applications → Start 啟動。
測試工具鏈
- DB2 for z/OS SOAP UDF:SQL 內直接呼叫 Web Service (需完成 UDF 設定)。
- Data Studio Web Services Explorer:圖形化測試。
- Data Web Service Test Client:WAR 內建瀏覽器介面。
本文採 SOAP UDF 展示:
VALUES DB2XML.SOAPHTTPV(
'https://host:port/AccountInquiry/ListCustomer', -- Endpoint
'ListCustomer', -- SOAP Action
'...John...' -- Request
)
回傳 VARCHAR XML,存檔格式化後清晰可見 (圖 18-19)。AccountSummary / AccountDetail 同理 (圖 20-21)。
XSLT 轉換:XML 秒變 HTML Web 應用
運行時擴展:REST 風格 + XSLT 輸出轉換

- 瀏覽器發送 HTTP GET (REST 風格 URL)。
- WAS 接收 → DWS Servlet → JDBC 呼叫存儲過程。
- XML 回應經 XSLT Processor 轉換為 HTML。
- 瀏覽器渲染 HTML,超連結支援鑽取 (ListCustomer → AccountSummary → AccountDetail)。
三份 XSLT 樣式表 (隨源碼提供)
| 操作 | XSLT 檔案 | 關鍵輸出 |
| ListCustomer | ListCustomertoHtml.xsl | 客戶表格,客戶號超連結帶參數呼叫 AccountSummary |
| AccountSummary | AccountSummarytoHtml.xsl | 帳戶表格,帳號超連結呼叫 AccountDetail |
| AccountDetail | AccountDetailtoHtml.xsl | 詳細資訊卡片,無後續鑽取 |
轉換前後對比 (圖 23-31):XML 結構化資料 → 含超連結的 HTML 表格/卡片。
綁定 XSLT 至操作
- Data Project Explorer 右鍵操作 → Manage XSLT (圖 32)。
- Configure XSL 選擇對應 .xsl 檔 (圖 33)。
- 重新 Build WAR → 重新安裝至 WAS。
實測:瀏覽器體驗零代碼 Web 應用
- 輸入 REST URL:
https://host:port/AccountInquiry/ListCustomer?cusName=John (參數 URL 編碼)。
- 呈現客戶清單 (圖 34),點擊客戶號 36505633552。
- 自動導向 AccountSummary (圖 35),顯示該客戶帳戶。
- 點擊帳號 9000000002,進入 AccountDetail (圖 36)。
全程無 Java/JS 代碼,純配置 + XSLT 完成。
結語與展望
DWS 讓 DB2 for z/OS 存儲過程零改造成為 SOA 服務,XSLT 再橋接 Web 體驗。後端開發人員無需 Java 技能即可參與服務化。下集將介紹 User-Defined Function (UDF) 整合 z/OS Data Set 與 USS 檔案系統,進一步拓展 DWS 資料來源邊界。