I was using an MQ application in Liberty, and rather do things the easy way, I did what I normally do, and did it the hard way. On my z/OS I did not have the queue manager defined, because I wanted to see what happened. I was not expecting the expedition.
You configure MQ in Liberty using configuration like
<jmsConnectionFactory jndiName="jms/cf1" connectionManagerRef="ConMgr1"> <properties.wmqJms transportType="BINDINGS" queueManager="MQPA"/>
I was expecting a message like the following in the job output.
Application COLINAPP MQCONN call to MQPA failed with compcode '2' ('MQCC_FAILED')reason '2058' ('MQRC_Q_MGR_NAME_ERROR').
Oh no, it was not that easy. It was quite a trek into the jungle to find the information.
In the Liberty server’s logs directory there is a message.log file. In this file I had
9/14/20 19:16:32:242 GMT 00000060 com.ibm.ws.logging.internal.impl.IncidentImpl I FFDC1015I: An FFDC Incident has been created: "com.ibm.mq.connector.DetailedResourceException: MQJCA1011: Failed to allocate a JMS connection., error code: MQJCA1011 An internal error caused an attempt to allocate a connection to fail. See the linked exception for details of the failure. com.ibm.ejs.j2c.poolmanager.FreePool.createManagedConnectionWithMCWrapper 199" at ffdc_20.09.14_22.214.171.124.log
This was one long line, and I had to scroll sideways (just like you did) to see the content (or use the ISPF line prefix command “tf” to flow the text to the display width). A key hint was the message MQJCA1011 An internal error caused an attempt to allocate a connection to fail so I knew I was on the right trail. I now knew the name of the file – ffdc_20.09.14_126.96.36.199.log.
Knowing the name of the file did not help very much, as if you use ISPF 3.17 (z/OS UNIX Directory List ) it showed a list of 40 files with the name ffdc_20.09.14_1 (ffdc_yy.mm.dd_h). This is because it only displays the first part of the name (and I could see no way to configure the display to making this longer).
The file has a name ffdc_20.09.14_188.8.131.52.log and a displayed time stamp of 2020/09/14 18:16:32 which is close enough – allowing for the time zone difference and the time take to write the file. I was fortunate not to be running a workload and producing many of these files.
I edited the file – and I could see the full file name at the top of the page, so I knew I was in the right file.
The file has long lines, so I had to scroll or use the “tf” line command to reformat it.
Near the top it had
Stack Dump = com.ibm.mq.connector.DetailedResourceException: MQJCA1011: Failed to allocate a JMS connection., error code: MQJCA1011 An internal error caused an attempt to allocate a connection to fail. See the linked exception for details of the failure.
Further down it had
Caused by: com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ0018: Failed to connect to queue manager 'MQPA' with connection mode 'Bindings' and host name 'localhost(1414)'.
and further further down (line 50) I found the treasure
Caused by: com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2058' ('MQRC_Q_MGR_NAME_ERROR').
What a trek to find the information I needed!
Next time I’ll just list the logs/ffdc directory, edit (not browse) each file and search for “compcode”. You cannot use “grep compcode” from uss because the file is in UTF8 and does not find it. You can just use oedit file_name in uss.
It would be nice if the MQ code could be enhanced to have an option “makeErrorsHardToFind” which you could set to “no”, and still keep the default “yes”.