cics web services overview

37
CICS Web Services Overview Somnath Niyogi Dec 15th, 2014 (Mon)

Upload: alien-coders

Post on 15-Jul-2015

168 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: CICS Web Services Overview

CICS Web Services Overview

Somnath Niyogi

Dec 15th, 2014 (Mon)

Page 2: CICS Web Services Overview

Agenda

• Introduction to web services in general, and in CICS

• Methods for creating a web service provider in CICS through CICS web services assistant

• Methods for creating a web service requester in CICS through CICS web services assistant

• Diagnosing web services in CICS• Discussion on POC Array program Webservice

Page 3: CICS Web Services Overview

Basic Terms

Web service

• A software system designed to support interoperable machine to-machine interaction over network.

• It has an interface described in a machine-process able format (specifically WSDL)

• Other systems interact with it using SOAP messages, typically conveyed using HTTP [...]

Page 4: CICS Web Services Overview

WSDL

• Web Service Description Language is an XML vocabulary that describes the messages that

are exchanged between the requester and provider

SOAP

• A framework for packaging and exchanging XML messages

Page 5: CICS Web Services Overview
Page 6: CICS Web Services Overview

Example SOAP request

<soapenv:Envelopexmlns="http://www. PAYBUS.PAYCOM1.Request.com“ xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

<soapenv:Body><PAYBUSOperation><ws_payroll_data>

<ws_request>DISP</ws_request><ws_key>

<ws_department>1</ws_department><ws_employee_no>00001</ws_employee_no>

</ws_key></ws_payroll_data>

</PAYBUS1Operation></soapenv:Body>

</soapenv:Envelope>

Page 7: CICS Web Services Overview

Example SOAP response<soapenv:Envelope

xmlns="http://www. PAYBUS.PAYCOM1.Request.com"xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><PAYBUSOperationResponse><ws_payroll_data>

<ws_request>DISP</ws_request><ws_key><ws_department>1</ws_department><ws_employee_no>00001</ws_employee_no>

</ws_key><ws_name>CIRCLE COMPUTER 1 </ws_name><ws_addr1>65 WILLOWBROOK BLVD </ws_addr1><ws_addr2>4TH FLOOR</ws_addr2><ws_addr3>WAYNE, NJ 07470 </ws_addr3><ws_phone_no>890-9331</ws_phone_no><ws_timestamp/><ws_salary>50000.00</ws_salary><ws_start_date>12312008</ws_start_date><ws_remarks>CIRCLE IS MAGIC </ws_remarks>

</PAYBUSOperationResponse></soapenv:Body>

</soapenv:Envelope>

Page 8: CICS Web Services Overview

Web Service Description Language(WSDL) file

• WSDL 1.1 (see below) or 2.0: generated by CICS web services

assistant .

• Describes the request/response message XML (schema); groups messages into operations on an abstract port; binds the operations to a message transport; specifies the web service address

Page 9: CICS Web Services Overview
Page 10: CICS Web Services Overview

CICS as a web service provider

Page 11: CICS Web Services Overview

CICS as a web service requester

Page 12: CICS Web Services Overview

Methods for creating a webservice provider in CICS

CICS web services assistant (batch utilities supplied with CICS) from a copybook, using the DFHLS2WS batch utility generates a WSDL file and a wsbind file

Use this method for: an

existing CICS application

that is fully functional and has a

COMMAREA or channel

interface.

You will need: a COBOL

Copybook (or PL/I, C/C++

equivalent)

Page 13: CICS Web Services Overview

Creating the CICS infrastructure for a provider

These steps apply to any method for creating

a provider.

1. Create a TCPIPSERVICE resource.

2. Create a pipeline configuration file.

3. Create a PIPELINE resource.

4. Unless you use auto installed PROGRAM

definitions, create a PROGRAM resource for each

program in the pipeline.

Page 14: CICS Web Services Overview

Creating a providerusing the CICS web services assistant

1. Run the DFHLS2WS batch utility (for example, specifying aCOBOL copybook as the input file).

2. Copy the generated wsbind file to the pickup directory(the z/OS UNIX path specified by the WSDIR attribute of thePIPELINE resource). Optionally, copy the generated WSDL file to the same path (if you want to validate the SOAP messages).

3. Install the PIPELINE (dynamically creates the WEBSERVICEand URIMAP resources).

Page 15: CICS Web Services Overview

JCL to run DFHLS2WS

Page 16: CICS Web Services Overview

Creating a web service requester in CICS

Page 17: CICS Web Services Overview

Methods for creating a web service requester in CICS

1. CICS web services assistant from a WSDL, using the

DFHWS2LS batch utility

2. RDz from a WSDL (using a wizard), with interpretive runtime XML conversion, as per DFHWS2LS, above (no compiled option for a requester)

– Both methods generate copybooks and a wsbind file. However, the RDz also generates COBOL source for a requester program, demonstrating how to use the EXEC CICS INVOKE WEBSERVICE command.

Page 18: CICS Web Services Overview

Creating a requesterusing the CICS web services assistant

You will need:

the WSDL for

the web service

that you want

to use

Page 19: CICS Web Services Overview

Creating the CICS infrastructure for a requester

Identical to the steps for a provider, except that a

requester does not require a TCPIPSERVICE or a

URIMAP resource

1. Create a pipeline configuration file.

2. Create a PIPELINE resource.

3. Unless you use auto installed PROGRAM definitions, create a PROGRAM resource for each program in the pipeline.

Page 20: CICS Web Services Overview

Creating a requesterusing the CICS web services assistant

1. Run the DFHWS2LS batch utility (for example, specifying a COBOL copybook as the input file).

2. Copy the generated wsbind file to the pickup directory

(the z/OS UNIX path specified by the WSDIR attribute of the PIPELINE resource). Optionally, copy the generated WSDL file to the same path.

3. Install the PIPELINE (dynamically creates the WEBSERVICE resource).

4. Add an EXEC CICS INVOKE WEBSERVICE command to your COBOL program to send the request, and additional code to process the response.

The requester is ready for testing.

Page 21: CICS Web Services Overview

JCL to run DFHWS2LS

Page 22: CICS Web Services Overview

COBOL copybook generated by DFHWS2LS

03 PAYBUSOperation.06 wsXpayrollXdata.

09 wsXrequest PIC X(4).09 wsXkey.

12 wsXdepartment PIC X(1).12 wsXemployeeXno PIC X(5).

09 wsXname PIC X(20).09 wsXaddr1 PIC X(20).09 wsXaddr2 PIC X(20).09 wsXaddr3 PIC X(20).09 wsXphoneXno PIC X(8).09 wsXtimestamp PIC X(8).09 wsXsalary PIC X(8).09 wsXstartXdate PIC X(8).09 wsXremarks PIC X(32).09 wsXmsg PIC X(60).

Page 23: CICS Web Services Overview

Sending a request to web service from a CICS COBOL program

EXEC CICS INVOKE

WEBSERVICE(CV-WEBSERVICE)

CHANNEL(CV-CHANNEL-NAME)

OPERATION(CV-OPERATION)

URI(CV-URI)

RESP(WS-EIB-RESP)

END-EXEC.

Page 24: CICS Web Services Overview

Capture the response received from web service call

01 RESPONSE-AREA PIC X(5000) VALUE SPACES (LARGE ENOUGH TO CONTAIN THE RESPONSE)

EXEC CICS GET CONTAINER('DFHRESPONSE')

INTO(RESPONSE-AREA)

CHANNEL('mychannel’)

RESP(RESP)

RESP2(RESP2)

END-EXEC .

DISPLAY RESPONSE-AREA .

Page 25: CICS Web Services Overview

Array Program POC Walkthrough

This PPC was done to test how array is being treated in webservice call.

Few things needs to specify in SOAP PIPELINE WORK VARIABLES

• Operation Name: Specify the operation name in program same as method being used in remote webservice .

Page 26: CICS Web Services Overview

• Webservice Name: Specify the Webservice name in program same name as specified while installing webservice either in requester or provider mode in CICS TS 3.x

Program:

CICS TS 3.x

Page 27: CICS Web Services Overview

• Container Name: Specify the container name same if you are using it in provider mode. Make sure container should have populated with DFHWS-DATA before invoking the webservice call.

Program

DFHLS2WS JCL

Page 28: CICS Web Services Overview

• Channel Name: A channel is a uniquely named reference to a collection of application data held in containers. A channel is analogous to a COMMAREA, but it lacks the constraints of a COMMAREA. Channel should be specified in the program before invoking webservice call.

Page 29: CICS Web Services Overview

• Response code: This response code helps us to

evaluate the service call response is a success or failure.

We have two response code .

1. COMMAND-RESP

2. COMMAND-RESP2

Different combination of the value of this codes specify different type of DFHRESPONSE received while operation.

Page 30: CICS Web Services Overview

• URI-OVERRIDE: This parameter is being used to pass the soap address from application program. This field should be populated before invoking webservice call.URI used in web service can be same or different. URI passed in application program override the end-point should be stored in the WSDL document.

Program

WSDL

Page 31: CICS Web Services Overview

Populate data though Array• Use PERFORM verb to create the array of N occurrence.

• Move N number to arg0-num of getArray. I moved 5 here to generate 5 rows.

• Calculate how long the data will be.

Page 32: CICS Web Services Overview

• Put the array data in container from local array structure,

WS-RECORDS-ARRAY.

• Put the populated Request Language structure into SOAP container.

Page 33: CICS Web Services Overview

• Invoke the remote Web service call. Here we are overriding the URI. Channel has content of DFHWS Body. WS-WEBSERVICE-NAME variable has webservice TestArraydefined.WS-Operation variable have getArray method that will be mapped to remote webservice .

Page 34: CICS Web Services Overview

• Receive the response and process it through Response Language Structure.

Page 35: CICS Web Services Overview

Installing Webservice• Generate the WSBIND file using either the DFHLS2WS utility (if a provider) or the

DFHWS2LS utility (if a requester).

• Copy the WSBIND file to the location /cicsoap/devd/provider or /cicsoap/devd/requester which are the locations that CICDEVD reads for webservice WSBIND files. Specify permission bit to 775.

• The name of the WSBIND file must be the name of the webservice. For example, if the webservice is a requester service called TestArray, then the wsbind file needs to be /cicsoap/devd/requester/TestArray.wsbind

Page 36: CICS Web Services Overview

• Run Pipeline SCAN for CICS using requester or provider to pick up your WSBIND file parameters and install webservice. Issue the SSPL transaction in CICDEVD.

• For a provider, the pipeline name to enter is EXPIPE01, and for a requester, the pipeline name to enter is EXPIPE02. Enter either of these names against ‘Enter PIPELINE’ and hit enter. You should receive the following message back:

• The WSBIND file that was copied should now have been loaded by CICDEVD.

Page 37: CICS Web Services Overview

THANK YOU