Introduction
I’ll cover the instructions to install z/OS Connect, but the instructions are similar for other products. The steps are to create the minimum server configuration and gradually add more function to it.
The steps below guide you through
- Overview
- planning to help you decide what you need to create, and what options you have to choose
- initial customisation and creating a server, creating defaults and creating function specific configuration files, for example a file for SAF
- starting the server
- enable logon security and add SAF definitions
- add keystores for TLS, and client authentication
- adding an API and service application
- protecting the API and service applications
- collecting monitoring data including SMF
- use the MQ sample
- using WLM to classify a service
With each step there are instructions on how to check the work has been successful.
Use the MQ sample
You need to have installed the service, and protected it.
You need to configure MQ to include the MQ support and tell JMS where the libraries are
<server> <!-- Enable features --> <featureManager> <feature>zosconnect:mqService-1.0</feature> </featureManager> <wmqJmsClient nativeLibraryPath="/Z24A/usr/lpp/mqm/V9R1M1/java/lib"/> <variable name="wmqJmsClient.rar.location" value="/Z24A/usr/lpp/mqm/V9R1M1/java/lib/jca/wmq.jmsra.rar"/> </server>
You could configure a variable for the mq directory so you use it once, and use
<variable name="wmq" value="/Z24A/usr/lpp/mqm/V9R1M1/java/lib/" <wmqJmsClient nativeLibraryPath="${wmq}”/> <variable name="wmqJmsClient.rar.location" value="${wmq}wmq.jmsra.rar}">
You could also pass the mq location as a variable in STDENV, and so pass it in through JCL.
Configure the jms to define the queue manager and queues
<server> <jmsConnectionFactory jndiName="jms/cf1" connectionManagerRef="ConMgr1"> <properties.wmqJms transportType="BINDINGS" queueManager="CSQ9"/> </jmsConnectionFactory> <connectionManager id="ConMgr1" maxPoolSize="5"/> <!-- A queue definition where request messages for the stock query application are sent. --> <jmsQueue jndiName="jms/stockRequestQueue"> <properties.wmqJms baseQueueName="STOCK_REQUEST" targetClient="MQ"/> </jmsQueue> <!-- A queue definition where response messages from the stock query application are sent. --> <jmsQueue jndiName="jms/stockResponseQueue"> <properties.wmqJms baseQueueName="STOCK_RESPONSE" targetClient="MQ"/> </jmsQueue> </server>
and include these in the server.xml file.
You need to compile and run the back end service. See here. Take care if using cut and paste as there a long lines which wrap, and cause compilation errors.
Because the MQ path name is long I used
export HLQ="/usr/lpp/mqm/V9R1M1/java/lib"
java -cp $HLQ/com.ibm.mq.allclient.jar:. -Djava.library.path=$HLQ TwoWayBackend CSQ9 STOCK_REQUEST STOCK_RESPONSE
I set up a job to run this in back ground, so I could free up my TSO terminal.
Use the API
Once installed you should be able to use the API. For example
curl –insecure -i –cacert cacert.pem –cert adcdd.pem:password –key adcdd.key.pem https://10.1.3.10:9443/stockmanager/stock/items/999999
If the back end application was working I got
{"SQRESP":{"ITEM_ID":999999,"ITEM_DESC":"A description. 00050","ITEM_COST":45,"ITEM_COUNT":0}}
If the back end application was not working I got back an empty response.
The back-end application runs until Ctrl+c is used. On my USS, the ESCape key is cent symbol ¢ (Unicode 00a2) which I do not have on my default keyboard. See x3270 – where’s the money key? for guidance on how to set it.
Use the Service
To use the API I used a web browser with
https:10.1.3.10/9443/stockmanager/stock/items/999999
and got back
{"SQRESP":{"ITEM_ID":999999,"ITEM_DESC":"A description. 00050","ITEM_COST":45,"ITEM_COUNT":0}}
or curl with
curl --insecure -X post -H Content-Type: application/json -H "Content-Type:application/json" -i --cacert cacert.pem --cert adcdd.pem:password --key adcdd.key.pem --data {"STOCKQRYOperation": {"sqreq" : { "item_id": 2033}}} https://10.1.3.10:9443/zosConnect/services/stockQuery?action=invoke