AnsweredAssumed Answered

The MQ message could not be read: Input length = 1

Question asked by Konfu on Feb 15, 2017
Latest reply on Feb 17, 2017 by havja02

We have build following things in DevTest:

 

  • a test case that sends a SOAP message via HTTPS transport protocol to an Enterprise Service Bus service.
  • a virtualized Mainframe service based on req/response pairs (via IBM MQ Native).
    • these messages contain a IIH header together with the actual SOAP message in XML format, so we have put a scripted dataset protocol that removes the header in the Listen step of the VSM before doing the matching.

 

The goal is to run the test case which sends the SOAP message to the ESB which is configured to send it's message to the virtual MF service.

 

When running the test case, the virtual service receives the following incoming request:

<?xml version="1.0" ?>

 <request operation="Request 1" matchTolerance="EXACT">

<attributes>

   <parameter name="recorded_raw_request_bytes">SUlIIAAAAAEAAABUAA ... 9yaWdpbmF0b3I+=</parameter>

</attributes>

<metaData>

   <parameter name="msg.putApplicationType">28</parameter>

   <parameter name="msg.characterSet">1208</parameter>

   <parameter name="msg.format">MQIMS</parameter>

   <parameter name="msg.messageType">1</parameter>

   <parameter name="msg.originalLength">-1</parameter>

   <parameter name="msg.expiry">-1</parameter>

   <parameter name="msg.userId">B0PR17D</parameter>

   <parameter name="msg.putDateTime">1486976729170</parameter>

   <parameter name="msg.report">16777216</parameter>

   <parameter name="msg.encoding">273</parameter>

   <parameter name="msg.putApplicationName">WebSphere MQ Client for Java</parameter>

   <parameter name="msg.messageSequenceNumber">1</parameter>

   <parameter name="msg.messageId">414D51204D5152534457303120202020589AEBB72005A30A</parameter>

   <parameter name="Payload.class">String</parameter>

   <parameter name="channel.name">Request 1</parameter>

</metaData>

<body charset="UTF-8">The MQ message could not be read: Input length = 1.</body>

</request>

and responds with a SOAP fault:

 

<?xml version="1.0" encoding="UTF-8"?>

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">

<S:Body>

   <S:Fault xmlns:ns3="http://www.w3.org/2003/05/soap-envelope">

     <faultcode>S:Server</faultcode>

     <faultstring>The LISA VSE service could not match your request to a recorded request. Consider expanding your service image.</faultstring>

     <detail>

       <ns2:exception xmlns:ns2="http://jax-ws.dev.java.net/" class="java.lang.Exception">

         <message>The LISA VSE service could not match your request to a recorded request. Consider expanding your service image.</message>

         <ns2:stackTrace>

         </ns2:stackTrace>

       </ns2:exception>

     </detail>

   </S:Fault>

</S:Body>

</S:Envelope>

 

The recorded_raw_request_bytes in the incoming request (i have removed some chars from it above) is actual a base64 representation of the IIH header and the SOAP request message.

 

I would like to find out why the incoming request already comes in with the The MQ message could not be read: Input length = 1. error message. Why can't we see the actual request message?

 

PS: The scripted dataset protocol handler isn't even triggered yet, so it's not a scripting issue.

 

Any help on this is much appreciated.

Outcomes