SOAP request reply activity fails with "SoapMessage::initRequestMessage" error when JMS is used as the transport using an external concrete WSDL.

SOAP request reply activity fails with "SoapMessage::initRequestMessage" error when JMS is used as the transport using an external concrete WSDL.

book

Article ID: KB0089470

calendar_today

Updated On:

Products Versions
TIBCO ActiveMatrix BusinessWorks -
Not Applicable -

Description

Resolution:
When there is an external concrete WSDL to create a SOAP request with the JMS transport, if the value of the transport attribute is not set correctly, the SOAP request creation fails with the following error:

2014 May 19 12:22:56:552 GMT -7 BW.DummyForActional Error [] SoapMessage::initRequestMessage Job-8000 Error in [TEST/OneWay.process/SOAPRequestReply]
SoapMessage::initRequestMessage
    at com.tibco.bw.service.binding.soap.impl.XDataSoapHelper.initRequestMessage(Unknown Source)
    at com.tibco.bw.soap.share.reqrep.SoapRequestor.prepareMessage(Unknown Source)
    at com.tibco.bw.soap.share.reqrep.SoapRequestor.prepareMessage(Unknown Source)
    at com.tibco.bw.soap.share.reqrep.SoapRequestor.execute(Unknown Source)
    at com.tibco.plugin.soap.SOAPSendReceiveActivity.eval(Unknown Source)
    at com.tibco.pe.plugin.Activity.eval(Unknown Source)
    at com.tibco.pe.core.TaskImpl.eval(Unknown Source)
    at com.tibco.pe.core.Job.a(Unknown Source)
    at com.tibco.pe.core.Job.k(Unknown Source)
    at com.tibco.pe.core.JobDispatcher$JobCourier.a(Unknown Source)
    at com.tibco.pe.core.JobDispatcher$JobCourier.run(Unknown Source)
caused by: java.lang.NullPointerException
    at com.tibco.spin.utils.ContextUtils.a(Unknown Source)
    at com.tibco.spin.utils.ContextUtils.isDocumentStyle(Unknown Source)
    at com.tibco.spin.soap.processors.outbound.SoapBodySerializer.do(Unknown Source)
    at com.tibco.spin.soap.processors.outbound.SoapBodySerializer.process(Unknown Source)
    at com.tibco.spin.soap.processors.outbound.SoapEnvelopeSerializer.process(Unknown Source)
    at com.tibco.spin.soap.processors.SoapPipeline.process(Unknown Source)
    at com.tibco.spin.soap.processors.SoapPipeline.prepare(Unknown Source)
    at com.tibco.bw.service.binding.soap.impl.XDataSoapHelper.initRequestMessage(Unknown Source)
    at com.tibco.bw.soap.share.reqrep.SoapRequestor.prepareMessage(Unknown Source)
    at com.tibco.bw.soap.share.reqrep.SoapRequestor.prepareMessage(Unknown Source)
    at com.tibco.bw.soap.share.reqrep.SoapRequestor.execute(Unknown Source)
    at com.tibco.plugin.soap.SOAPSendReceiveActivity.eval(Unknown Source)
    at com.tibco.pe.plugin.Activity.eval(Unknown Source)
    at com.tibco.pe.core.TaskImpl.eval(Unknown Source)
    at com.tibco.pe.core.Job.a(Unknown Source)
    at com.tibco.pe.core.Job.k(Unknown Source)
    at com.tibco.pe.core.JobDispatcher$JobCourier.a(Unknown Source)
    at com.tibco.pe.core.JobDispatcher$JobCourier.run(Unknown Source)

Symptoms:
=======
The WSDL is provided by an external service provider and the transport for the service invocation is JMS. The transport attribute under soap:binding in the WSDL indicates that JMS is being used. TIBCO requires a predefined/fix attribute value for this. If the concrete WSDL has a different attribute value than what TIBCO expects, it throws the error above.

Cause:
=====
As of now, there is no standard specification for SOAP messages over JMS. TIBCO implements this based on TIBCO's own specification. According to the BW documentation: SOAP palette --> SOAP Message Over the JMS Transport WSDL Binding, the WSDL Binding for SOAP over JMS varies only slightly from the SOAP over HTTP binding. The transport attribute under soap:binding indicates that JMS is being used. The attribute must have the value: http://www.tibco.com/namespaces/ws/2004/soap/binding/JMS.

Resolution:
=======
To resolve this issue, replace the existing value under transport binding to "http://www.tibco.com/namespaces/ws/2004/soap/binding/JMS". For example, in the attached WSDL, (Filename: conwsdl_problematic.wsdl) the SOAP binding transport has the value: http://scehmas.xmlsoap.org/soap/jms, so if this WSDL is used to create the SOAP request, it will fail with the above error trace. This has to be replaced with "http://www.tibco.com/namespaces/ws/2004/soap/binding/JMS" to avoid the error. See the attached (Filename: conwsdl_correct.wsdl).

Issue/Introduction

SOAP request reply activity fails with "SoapMessage::initRequestMessage" error when JMS is used as the transport using an external concrete WSDL.

Additional Information

BW guide Palette Reference->SOAP Palette : SOAP Messages Over the JMS Transport.

Attachments

SOAP request reply activity fails with "SoapMessage::initRequestMessage" error when JMS is used as the transport using an external concrete WSDL. get_app
SOAP request reply activity fails with "SoapMessage::initRequestMessage" error when JMS is used as the transport using an external concrete WSDL. get_app