operationsClient.execute(true) 将数据正确地发送到 IBM MQ 队列,但抛出 axis2



我试图通过某些 WSDL 生成的客户机存根将数据发送到 IBM MQ 队列。在存根中,在此调用 _operationsClient(true( 上,它调用覆盖的调用调用,在此调用中与队列管理器建立连接,并将数据发送到 putQueue。 但是当调用结束时,它会使用 stackTrace 抛出异常,如下所示:

org.apache.axis2.AxisFault: The input stream for an incoming message is null.
at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:91)
at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:66)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:347)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:414)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:150)

谷歌搜索时对此没有太多罚款。 尝试了这个 axis2 错误:传入消息的输入流为空,但对我不起作用。 我推测标头在更改执行调用标头字段之前和之后设置错误,但是数据如何正确发送。

对于 axis2 服务(从架构(,我们需要设置 2 个传输,TransportSender 和 transportReceiver。如果设置正确,则不会出现此错误。

但是,如果您无法设置它,则有解决方法。 收到响应后,在消息上下文中手动设置输入流。这应该可以解决问题。(在下面找到代码(

String response = "";//your manual response string
byte[] inputBuffer = new byte[4096]; 
DatagramPacket packet = new DatagramPacket(inputBuffer, inputBuffer.length);
msgContext.setProperty(MessageContext.TRANSPORT_IN, new ByteArrayInputStream(response.getBytes(), 0, response.getBytes().length));

相关内容

  • 没有找到相关文章

最新更新