Author |
Message
|
satchin |
Posted: Sat Dec 17, 2011 5:19 pm Post subject: Exception with SOAPExtract node in message flow |
|
|
Apprentice
Joined: 08 Feb 2011 Posts: 33
|
Hi All,
I have created a message flow with SOAPInput->Process(SubFlow)->SOAPExtract->SOAPReply and exposing this message flow as service.When I hve not included SOAPExtract node it is giving the sucesssful response, if I have included SOAPExtract node, then I am getting the below exception message.
I have given below settings for SOAPExtract node
Remove envelope checkbox(Checked)
Envelope Destination->$LocalEnvironment/SOAP/Envelope
Destinationpath mode -> Createpath XPath location of existing element (tried with both options seperately).
Please help to resolve this issue, many thanks in advance.
Code: |
<b><?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><soapenv:Fault><faultcode>soapenv:Server</faultcode><faultstring>BIP3113E: Exception detected in message flow ServiceFlow.SOAP Input (broker MB7BROKER) </faultstring><detail><Text>BIP2230E: Error detected whilst processing a message in node 'ServiceFlow.SOAP Extract'.
The message broker detected an error whilst processing a message in node 'ServiceFlow.SOAP Extract'. An exception has been thrown to cut short the processing of the message. </b>
See the following messages for details of the error. : F:\build\S700_P\src\DataFlowEngine\PluginInterface\ImbJniNode.cpp: 1179: ImbJniNode::evaluate: ComIbmSOAPExtractNode: ServiceFlow#FCMComposite_1_5
BIP4367E: The method ''evaluate'' in Java node ''SOAP Extract'' has thrown the following exception: 'java.lang.RuntimeException: An invalid SOAP message was received in the SOAPExtract node: SOAP Extract'.
The method ''evaluate'' of the Java node has thrown an exception. Examine previous error messages for details of the cause of the problem.
This error is generated by the Java node API. It can occur in a Java Compute node or a Java user-defined node. If the node is a user-defined node, contact the node provider for further details. : F:\build\S700_P\src\DataFlowEngine\PluginInterface\com_ibm_broker_plugin_CMbService.cpp: 1845: ImbJavaExceptionUtils::throwableToNativeException: :
BIP4395E: Java exception: ''java.lang.RuntimeException''; thrown from class name: ''com.ibm.broker.soap.SoapExtractNode'', method name: ''removeSOAPEnvelope'', file: ''SoapExtractNode.java'', line: '238'
The message contains that data associated with a Java exception.
No user action required. : F:\build\S700_P\src\DataFlowEngine\PluginInterface\com_ibm_broker_plugin_CMbService.cpp: 1863: ImbJavaExceptionUtils::throwableToNativeException: : </Text></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope> |
|
|
Back to top |
|
 |
smdavies99 |
Posted: Sat Dec 17, 2011 11:04 pm Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
In my experience, I tend to order things sligthly differently.
SOAPInput--->SOAPExtract---->Process/format reply----->SOAPReply
In the Process/FormatRepy bit I specifically create an Output Message Tree that contains the Reply message (or response message).
The reason for doing it this way is that the SOAPextract Node can be configured to 'routeToLabel'. Thus if there is more than one Input Request Type defined in your WSDL, the SOAPExtract node will decipher the request and route it to the correct processing point without you having to write code to do it yourself. (KISS at work here)
Is there any particular reason why you are putting the SOAP Extract node after you format the response?
I'd look at putting TraceNodes (configured to output ${Root}) at each step in your process. Then with usertrace enabled, run both scenarios and then start comparing the two outputs. I'd expect them to show a lot more detail about why one works and one does not. _________________ WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995
Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions. |
|
Back to top |
|
 |
fjb_saper |
Posted: Sun Dec 18, 2011 1:14 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
seems quite clear to me from the error message:
Quote: |
BIP4367E: The method ''evaluate'' in Java node ''SOAP Extract'' has thrown the following exception: 'java.lang.RuntimeException: An invalid SOAP message was received in the SOAPExtract node: SOAP Extract'.
The method ''evaluate'' of the Java node has thrown an exception. Examine previous error messages for details of the cause of the problem.
This error is generated by the Java node API. It can occur in a Java Compute node or a Java user-defined node. If the node is a user-defined node, contact the node provider for further details |
Are you by any chance trying to use SOAP Extract on something that does not have the SOAP Envelope and Body?? _________________ MQ & Broker admin |
|
Back to top |
|
 |
ruchir |
Posted: Sun Dec 18, 2011 8:46 am Post subject: |
|
|
Guest
|
Hi,
I think the message you are getting from SubFlow is not the correct. There may be some issue with the SOAP Envelope as fjb_saper said. It will be better if you could use trace node and post us the message that you are getting from SubFlow. Then it will be easy for us to help you. |
|
Back to top |
|
 |
satchin |
Posted: Tue Dec 20, 2011 4:18 pm Post subject: |
|
|
Apprentice
Joined: 08 Feb 2011 Posts: 33
|
Hi All,
Thanks for your reply, I think I have followed the wrong way, I am new to message broker.
What I thought is afer getting the SOAP response message to transform this message I have used SOAPExtract node.
Is it possible to remove SOAP Envelope and get XML format message?
Please help me how to transform SOAP response message. |
|
Back to top |
|
 |
Vitor |
Posted: Tue Dec 20, 2011 6:29 pm Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
satchin wrote: |
Is it possible to remove SOAP Envelope and get XML format message? |
Why not use the inbuilt SOAP domain to access the payload (the XML)?
satchin wrote: |
Please help me how to transform SOAP response message. |
There's a lot of useful material in the InfoCenter.
Someone will be along to suggest training in a moment. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
lancelotlinc |
Posted: Wed Dec 21, 2011 7:53 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
satchin wrote: |
Please help me how to transform SOAP response message. |
Code: |
SET OutputRoot.SOAP.Body.ns114:myBankAccountNumber = InputRoot.SOAP.Body.ns432:yourBankAccountNumber;
SET OutputRoot.SOAP.Body.ns114:myAccountBalance = InputRoot.SOAP.Body.ns432:yourAccountBalance;
SET OutputRoot.SOAP.Body.ns114:transferAllAvailableFunds = TRUE;
|
_________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
Vitor |
Posted: Wed Dec 21, 2011 7:58 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
lancelotlinc wrote: |
satchin wrote: |
Please help me how to transform SOAP response message. |
Code: |
SET OutputRoot.SOAP.Body.ns114:myBankAccountNumber = InputRoot.SOAP.Body.ns432:yourBankAccountNumber;
SET OutputRoot.SOAP.Body.ns114:myAccountBalance = InputRoot.SOAP.Body.ns432:yourAccountBalance;
SET OutputRoot.SOAP.Body.ns114:transferAllAvailableFunds = TRUE;
|
|
Example code not a training suggestion; so I was wrong.
Code along the lines I was suggesting; it must be Xmas. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Dec 21, 2011 8:03 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
lancelotlinc wrote: |
satchin wrote: |
Please help me how to transform SOAP response message. |
Code: |
SET OutputRoot.SOAP.Body.ns114:myBankAccountNumber = InputRoot.SOAP.Body.ns432:yourBankAccountNumber;
SET OutputRoot.SOAP.Body.ns114:myAccountBalance = InputRoot.SOAP.Body.ns432:yourAccountBalance;
SET OutputRoot.SOAP.Body.ns114:transferAllAvailableFunds = TRUE;
|
|
This is an example of a malformed soap msg and a malformed xml message.
Where is the root tag after the SOAP:Envelope and the SOAP:Body?
Something like
Code: |
SET OutputRoot.SOAP.Body.ns114:mymsg.ns114:myBankAccountNumber = InputRoot.SOAP.Body.ns432:yourBankAccountNumber;
SET OutputRoot.SOAP.Body.ns114:mymsg.ns114:transferAllAvailableFunds = TRUE; |
Have fun  _________________ MQ & Broker admin |
|
Back to top |
|
 |
lancelotlinc |
Posted: Wed Dec 21, 2011 9:49 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
For our Christmas dinner this year, we gave our manager a SOAP Extract Node.
[Bar of Dial] SOAP, [Bottle of Vanilla] Extract, and [a cheap bottle of] Node [wine]. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
|