国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
結合使用 CICS 和 DB2 pureXML

 

CICS 和 pureXML 簡介

CICS Web 服務支持在 CICS TS V3.1 中已變得可用。該特性使得 CICS 應用程序有可能成為服務請求者、服務提供者,或者兩者都是,可使用 HTTP 傳輸或 WebSphere? MQ 傳輸。Web 服務消息通常是 XML 形式的,且合并有 SOAP 頭,所以本文稱之為 SOAP 消息。有關 CICS Web 服務支持的更多信息,請參考本文末尾 參考資料 部分的適當鏈接。

DB2 9.1 for z/OS? 增加了對 XML 數(shù)據(jù)類型的支持(稱為 pureXML),從而允許原生地存儲和索引 XML 數(shù)據(jù)。原生的 XML 支持意味著,XML 在存儲時就被解析了。維護有 XML 索引,因而可以通過 XPath 和 SQL/XML 查詢快速訪問存儲的 XML。此外,在 DB2 10.1 中(本文發(fā)表之時還處于 beta 版本),存儲的 XML 也可以通過 XPath 更新。有關 DB2 pureXML 的更多信息,請參考本文末尾 參考資料 部分的適當鏈接。

本文通過結合使用 CICS 和 DB2 pureXML,展示如何使用 CICS Web 服務支持來存儲和檢索 SOAP 消息。場景簡要描述了連接 CICS Web 服務和 DB2 pureXML 后端之間的端到端所需的配置和部署。下載 部分提供了樣例代碼。樣例源代碼是用 COBOL 編寫的,但是將代碼轉(zhuǎn)換成 PL/I 或 C 編程語言會更直觀。

介紹兩個場景

兩個場景共享相同的 CICS 區(qū)域,該區(qū)域運行的是 CICS TS 4.1。XML 數(shù)據(jù)存儲在 DB2 9.1 表中,其中包含單個 XML 類型的列。清單 1 包含創(chuàng)建該表的 SQL 代碼。


清單 1. 創(chuàng)建帶有單個 XML 類型的列的表
                CREATE TABLE REDBOOK.PUREXML (SOAP XML) CCSID EBCDIC IN DATABASE REDBOOK;
                

下載 部分的樣例代碼包含用于創(chuàng)建數(shù)據(jù)庫 STOGROUP、TABLESPACE 和 TABLE 的完整 SQL。

第一個場景展示,一個名為 WEBINST 的 COBOL CICS 程序(一個管道處理程序和服務提供程序)如何將其從 Web 服務接收的 XML 消息插入 DB2 pureXML 列中。第二個場景展示,一個名為 WEBSLCT 的 COBOL CICS 程序(也是一個管道處理程序和服務提供程序)如何從 DB2 pureXML 列中檢索 XML,并將之作為響應返回給 Web 服務調(diào)用。

場景 1:存儲通過 CICS Web 服務進來的數(shù)據(jù)

此場景中的步驟展示如何配置 CICS 區(qū)域,以接受入站 Web 服務請求并將 SOAP 有效負荷存儲在 DB2 中。為了簡化本例,以將注意力放在設置 Web 服務的機制上,這里將輸入消息作為 Web 服務的輸出消息返回。

本例不是使用 CICS 提供的管道處理程序(DFHWS2LS0)——它將 SOAP 數(shù)據(jù)(XML)轉(zhuǎn)換成二進制語言結構,而是使用一個定制的管道處理程序(名為 WEBINST)來接收 SOAP 消息并將之直接插入 DB2 中。這無需讓 CICS 解析 XML,因而改善了性能。

步驟 1 — 創(chuàng)建 CICS 管道配置文件

將清單 2 中所示的管道配置文件作為 /u/user/config/insert_pipeline.xml 復制到 UNIX? System Services (USS)。該配置文件通知 CICS,這個名為 WEBINST 的定制管道處理程序?qū)⒈挥糜谔幚?Web 服務請求。


清單 2. CICS 管道配置文件
                <?xml version="1.0" encoding="EBCDIC-CP-US"?>
                <provider_pipeline xmlns="http://www.ibm.com/software/htp/cics/pipeline">
                <service>
                <terminal_handler>
                <handler>
                <program>WEBINST</program>
                <handler_parameter_list/>
                </handler>
                </terminal_handler>
                </service>
                </provider_pipeline>
                

步驟 2 — 創(chuàng)建和安裝 CICS 資源

在 CICS 區(qū)域中創(chuàng)建和安裝以下 CICS 資源:

  • PIPELINE(WEBINST) CONFIGFILE(/u/user/config/insert_pipeline.xml) SHELF(/u/user/shelf)
  • URIMAP(WEBINST) USAGE(PIPELINE) PIPELINE(WEBINST) HOST( * ) PATH(/pureXML/insert)
  • PROGRAM(WEBINST) DATALOCATION(ANY)
  • TCPIPSERVICE(PUREXML) PORT(xxxxx) PROTOCOL(HTTP)

以下資源是 DB2 所必需的,也可跟本文場景 2 中描述的 WEBSLCT 程序共享。

  • DB2ENTRY(PUREXML) ACCOUNTREC(TXid) AUTHTYPE(Userid) DRollback(Yes) PLAN(PUREXML)
  • DB2TRAN(PUREXML) ENTRY(PUREXML) TRANSID(CPIH)

將清單 3 中所示的 COBOL 程序復制到 z/OS,并用集成的 DB2/CICS/COBOL 編譯器編譯它。下載 部分的樣例代碼包含樣例編譯作業(yè)。


清單 3. COBOL 程序
                ******************************************************************
                IDENTIFICATION DIVISION.
                PROGRAM-ID. WEBINST.
                ENVIRONMENT DIVISION.
                CONFIGURATION SECTION.
                *
                DATA DIVISION.
                *
                WORKING-STORAGE SECTION.
                *
                01  WSRESP    PIC S9(8)   COMP VALUE 0.
                01  WSRESP2   PIC S9(8)   COMP VALUE 0.
                01  WSFLENGTH PIC S9(8)   COMP VALUE 1024.
                01  XMLDATA   PIC X(1024) VALUE SPACES.
                EXEC SQL INCLUDE SQLCA END-EXEC.
                LINKAGE SECTION.
                PROCEDURE DIVISION.
                MAINLINE SECTION.
                * Get the SOAP data
                EXEC CICS GET CONTAINER('DFHREQUEST')
                INTO(XMLDATA)
                FLENGTH(WSFLENGTH)
                RESP(WSRESP)
                RESP2(WSRESP2)
                END-EXEC.
                EXEC SQL
                INSERT INTO REDBOOK.PUREXML
                ( SOAP )
                VALUES ( :XMLDATA )
                END-EXEC
                * Respond with the original XML data by deleting DFHREQUEST
                * container and returning DFHRESPONSE container
                EXEC CICS DELETE CONTAINER('DFHREQUEST') END-EXEC.
                EXEC CICS PUT CONTAINER('DFHRESPONSE')
                FROM(XMLDATA)
                RESP(WSRESP)
                RESP2(WSRESP2)
                END-EXEC.
                * Exit program
                EXEC CICS RETURN END-EXEC.
                MAINLINE-EXIT.
                EXIT.
                *----------------------------------------------------------------*
                

步驟 3 — 從 Rational Developer for System z 測試 Web 服務

在基于 Eclipse 的 IDE(例如,Rational? Developer for System z?)中創(chuàng)建一個項目,并將樣例代碼中的 SWITCH.wsdl 文件導入到項目中。

右鍵單擊樣例 WSDL 文件并選擇 Web Services > Test with Web Services Explorer,如圖 1 所示。


圖 1. Test with Web Services Explorer

從 Endpoints 對話框(圖 2),使用 CICS TCPIPSERVICE 資源中指定的 TCP/IP 服務更新 URI 以指向您的 z/OS 映像,并單擊 Go。


圖 2. 添加新的 Endpoint

在 Invoke a WSDL Operation 窗體(圖 3)的字段中輸入測試數(shù)據(jù),并單擊 Go


圖 3. 輸入測試數(shù)據(jù)以產(chǎn)生 SOAP 消息

Eclipse 基于您在窗體中輸入的數(shù)據(jù)產(chǎn)生一個 SOAP 消息,并將之發(fā)送到 CICS。CICS 將 SOAP 傳遞到步驟 1 中創(chuàng)建的 WEBINST 定制管道處理程序。WEBINST 將數(shù)據(jù)插入到名為 REDBOOK.PUREXML 的 DB2 表的 XML 列中。WEBINST 應用程序也返回初始的 SOAP 消息作為響應,如圖 4 中的 Web Services Explorer 屏幕截圖所示。


圖 4. 請求和響應 SOAP 消息

步驟 4 — 展示數(shù)據(jù)真正存儲在數(shù)據(jù)庫中

這最后一步證實數(shù)據(jù)被插入到了 DB2 表中。從一個諸如 DB2 SPUFI 之類的工具,執(zhí)行清單 4 所示的 SQL 語句。


清單 4. 展示數(shù)據(jù)存儲在數(shù)據(jù)庫中的 SQL 語句
                SELECT * FROM REDBOOK.PUREXML
                

清單 5 展示上面 SQL 語句返回的 DB2 數(shù)據(jù)。


清單 5. SQL 語句返回的數(shù)據(jù)
                ---------+---------+---------+---------+---------+---------+---------+---------+
                SELECT * FROM REDBOOK.PUREXML;                                00010000
                ---------+---------+---------+---------+---------+---------+---------+---------+
                ....
                ---------+---------+---------+---------+---------+---------+---------+---------+
                <?xml version="1.0" encoding="IBM285"?><soapenv:Envelope xmlns:soapenv="http://s
                DSNT400I SQLCODE = 000,  SUCCESSFUL EXECUTION
                DSNT418I SQLSTATE   = 01004 SQLSTATE RETURN CODE
                DSNT415I SQLERRP    = DSN SQL PROCEDURE DETECTING ERROR
                DSNT416I SQLERRD    = 0 0  0  -1  0  0 SQL DIAGNOSTIC INFORMATION
                DSNT416I SQLERRD    = X'00000000'  X'00000000'  X'00000000'  X'FFFFFFFF'
                X'00000000'  X'00000000' SQL DIAGNOSTIC INFORMATION
                DSNT417I SQLWARN0-5 = W,W,,,, SQL WARNINGS
                DSNT417I SQLWARN6-A = ,,,,   SQL WARNINGS
                DSNE610I NUMBER OF ROWS DISPLAYED IS 1
                DSNE612I DATA FOR COLUMN HEADER .... COLUMN NUMBER 1 WAS TRUNCATED
                DSNE616I STATEMENT EXECUTION WAS SUCCESSFUL, SQLCODE IS 100
                ---------+---------+---------+---------+---------+---------+---------+---------+
                ---------+---------+---------+---------+---------+---------+---------+---------+
                DSNE617I COMMIT PERFORMED, SQLCODE IS 0
                DSNE616I STATEMENT EXECUTION WAS SUCCESSFUL, SQLCODE IS 0
                ---------+---------+---------+---------+---------+---------+---------+---------+
                DSNE601I SQL STATEMENTS ASSUMED TO BE BETWEEN COLUMNS 1 AND 72
                DSNE620I NUMBER OF SQL STATEMENTS PROCESSED IS 1
                DSNE621I NUMBER OF INPUT RECORDS READ IS 1
                DSNE622I NUMBER OF OUTPUT RECORDS WRITTEN IS 26
                ********************************************************** Bottom of Data ******
                

注意數(shù)據(jù)開始部分的 XML 聲明。它指出 XML 是 IBM285 (UK EBCDIC) 編碼類型的。關于它的重要性將在場景 2 中詳細介紹。

場景 2:查詢 pureXML 數(shù)據(jù)并返回 CICS Web 服務

此場景中的步驟展示如何創(chuàng)建一個 COBOL CICS 程序,它充當一個管道處理程序和服務提供程序,用于從 DB2 pureXML 列檢索 XML,并將之作為響應返回給 Web 服務調(diào)用。

步驟 1 — 創(chuàng)建 CICS 管道配置文件

將清單 6 中所示的 CICS 管道配置文件作為 /u/user/config/select_pipeline.xml 復制到 Unix System Services (USS)。該配置文件通知 CICS:名為 WEBSLCT 的定制管道處理程序?qū)⒈挥糜谔幚?Web 服務請求。


清單 6. CICS 管道配置文件
                <?xml version="1.0" encoding="EBCDIC-CP-US"?>
                <provider_pipeline xmlns="http://www.ibm.com/software/htp/cics/pipeline">
                <service>
                <terminal_handler>
                <handler>
                <program>WEBSLCT</program>
                <handler_parameter_list/>
                </handler>
                </terminal_handler>
                </service>
                </provider_pipeline>
                

步驟 2 — 創(chuàng)建和安裝 CICS 資源

在 CICS 區(qū)域中創(chuàng)建和安裝以下資源:

  • PIPELINE(WEBSLCT) CONFIGFILE(/u/user/config/select_pipeline.xml) SHELF(/u/user/shelf)
  • URIMAP(WEBSLCT) USAGE(PIPELINE) PIPELINE(WEBSLCT) HOST(*) PATH(/pureXML/select)
  • PROGRAM(WEBSLCT) DATALOCATION(ANY)

對于此場景,可以重用在場景 1 中為 WEBINST 定義的 TCPIPSERVICE、DB2ENTRY 和 DB2TRAN 資源。

將清單 7 中所示的 COBOL 程序復制到 z/OS,并利用集成的 DB2/CICS/COBOL 編譯器編譯它。下載 部分的樣例代碼包含樣例編譯作業(yè)。


清單 7. COBOL 程序
                ******************************************************************
                IDENTIFICATION DIVISION.
                PROGRAM-ID. WEBSLCT.
                ENVIRONMENT DIVISION.
                CONFIGURATION SECTION.
                *
                DATA DIVISION.
                *
                WORKING-STORAGE SECTION.
                *
                01  WSRESP    PIC S9(8)   COMP VALUE 0.
                01  WSRESP2   PIC S9(8)   COMP VALUE 0.
                01  WSFLENGTH PIC S9(8)   COMP VALUE 1024.
                01  XMLDATA   PIC X(1024) VALUE SPACES.
                EXEC SQL INCLUDE SQLCA END-EXEC.
                LINKAGE SECTION.
                PROCEDURE DIVISION.
                MAINLINE SECTION.
                * Get DB2 data
                EXEC SQL
                SELECT XMLSERIALIZE(SOAP AS CLOB)
                INTO :XMLDATA
                FROM REDBOOK.PUREXML
                END-EXEC.
                * Respond with the XML data by deleting DFHREQUEST
                * container and returning DFHRESPONSE container
                EXEC CICS DELETE CONTAINER('DFHREQUEST') END-EXEC.
                EXEC CICS PUT CONTAINER('DFHRESPONSE')
                FROM(XMLDATA)
                FLENGTH(WSFLENGTH)
                RESP(WSRESP)
                RESP2(WSRESP2)
                END-EXEC.
                * Exit program
                EXEC CICS RETURN END-EXEC.
                MAINLINE-EXIT.
                EXIT.
                *----------------------------------------------------------------*
                

注意,XMLSERIALIZE 函數(shù)在 SQL 語句中被用于 SELECT。這是為了讓 XML 聲明不被添加到返回的 XML 有效負荷的開頭。如果不帶 XMLSERIALIZE 使用 SELECT *SELECT SOAP,那么返回的 XML 在開頭部分將有一個 XML 聲明。此聲明宣稱 XML 被編碼在 CICS 系統(tǒng)的本地代碼頁。此本地代碼頁通常是一個 EBCDIC 代碼頁。在有些情況下,這會導致接收 XML 的應用程序由于不支持 EBCDIC 代碼頁而拒絕接收它。

步驟 3 — 從瀏覽器測試 Web 服務

將瀏覽器指向 WEBINST Web 服務的 URL。例如,在用于構建此場景的樣例案例中,此 URL 是:http://winmvsa1.hursley.ibm.com:12345/pureXML/select。

場景 1 中 WEBINST 程序插入的 SOAP 消息被檢索到并顯示在瀏覽器中,如圖 5 所示。


圖 5. WEBINST 程序插入的 SOAP 消息

其他場景

本文中描述的兩個場景所演示的例子有很多可能的變體。例子包括:

  • 使用 SQL XML 更新修改 DB2 中存儲的 XML,以響應一個請求;例如,更改地址。
  • 在存儲之前,使用 SQL XMLTABLE 刪除 XML 部分;例如,出于安全原因。
  • 除了將數(shù)據(jù)存儲為 XML 或等價形式之外,使用 SQL XMLTABLE 將 XML 轉(zhuǎn)換成關系列。

這些場景可以支持各種各樣的應用程序和服務,比如基于應用程序日志或窗體(例如,XHTML、XFORMS 或 Lotus Forms)的應用程序。

也可以確保 CICS Web 服務是安全的。本文末尾 參考資料 部分提供了到有關該主題詳細信息的鏈接。

結束語和展望

本文演示了,從一個通過 CICS Web 服務調(diào)用的 CICS COBOL 應用程序,在 DB2 pureXML 中插入和檢索 XML 內(nèi)容的基本步驟。插入和檢索時無需在 CICS 應用程序中解析或構造 XML 數(shù)據(jù)。輸入的 XML 消息直接存儲在 DB2 中。輸出的 XML 消息是從查詢 DB2 中的 XML 數(shù)據(jù)創(chuàng)建的。使用 DB2 pureXML 作為存儲數(shù)據(jù)庫的 CICS Web 服務可以很容易變成大型分布式應用程序(例如,XML 窗體應用程序或消息傳遞應用程序)的一部分。pureXML 數(shù)據(jù)庫也可以為入站和出站 CICS Web Services XML 消息形成一個可查詢的審計或應用程序日志。

致謝

感謝 Maj-Britt Risager(及同事)和 Lars Andersen Hylleberg(及同事)審閱了本文并提供了反饋意見。



本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
IBM Mashup Center 初探: 第二部分
IBM developerWorks 中國 : 數(shù)據(jù)庫性能調(diào)優(yōu)專題
SOA 案例研究,第 2 部分: 服務創(chuàng)建
Mainframe面試題集
用 WebSphere Studio Enterprise Developer 開發(fā) CICS COBOL 應用程式
DB2 pureXML的食譜 掌握IBM的混合數(shù)據(jù)服務器力量
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服