on 08-04-2009 3:25 PM
Hi,
I have a synchronous scenario of (request) Proxy --> XI --> SOAP and (response) SOAP --> XI --> Proxy. I am having an issue returning the application soap faults back to the sender system. When I enter invalid data while testing this webservice call with a soap client directly without XI I get a soap fault response:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.generalException</faultcode>
<faultstring>Login failed</faultstring>
<detail>
<LoginFault xmlns="NAMESPACE">
<exceptionCode>710</exceptionCode>
<exceptionMessage>Login failed</exceptionMessage>
</LoginFault>
<ns1:exceptionName xmlns:ns1="http://xml.apache.org/axis/">NAMESPACE</ns1:exceptionName>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
When testing this through XI, the response message after the Soap call is returning the following soap fault in XI payload:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!-- XML Validation Inbound Channel Response -->
<LoginFault xmlns="NAMESPACE">
<exceptionCode>710</exceptionCode>
<exceptionMessage>Login failed</exceptionMessage>
</LoginFault>
Notice just the detail body exists in the payload instead of the soap evelope and body, which I read is stripped off within XI in the case of application errors. I have setup a fault message mapping to tie the wsdl login fault with the standard fault message type and included this in the service interfaces and operations mapping. When the soap fault happens within XI I am getting the following mapping error:
NO_MAPPINGPROGRAM_FOUND: Mapping program is not available in runtime cache:
I am expecting the fault mapping to be executed in this case but doesn't seem to be found. Any ideas why this mapping error is occuring and not being directed to my fault message mapping? Is the mapping expecting the soap envelope and body to be included in the payload?
Any suggestions would be appreciated.
Thanks,
Nate
Prateek,
Thanks for the response. Yes, I've gone through that. I have setup my process in a similar way with mapping etc. although this goes through calling an RFC where as i need to raise it through a proxy.
Nate
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Ramesh,
I have previously imported the soap fault from the wsdl (looks identical to the soap fault in the payload) and I have it mapped to the standard fault message type. I am stil getting this mapping not found error though. When testing the fault payload in the fault message mapping, it is executed correctly within XI test mode so im not sure the mapping is the issue but config potentially. We are on PI 7.1.
Nate
Here are the errors I am seeing within the sxmb_moni transaction:
Call adapter exception:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!-- Call Adapter
-->
- <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
<SAP:Category>XIServer</SAP:Category>
<SAP:Code area="MAPPING">NO_MAPPINGPROGRAM_FOUND</SAP:Code>
<SAP:P1>Object ID 35F8008AA0A830FC93FC221572A15ABD Software Component DC6FB8300EDE11DC8E05DB6DA3E77028</SAP:P1>
<SAP:P2 />
<SAP:P3 />
<SAP:P4 />
<SAP:AdditionalText />
<SAP:Stack>Mapping program is not available in runtime cache: Object ID 35F8008AA0A830FC93FC221572A15ABD Software Component DC6FB8300EDE11DC8E05DB6DA3E77028</SAP:Stack>
<SAP:Retry>M</SAP:Retry>
</SAP:Error>
Response Message Error:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!-- XML Validation Inbound Channel Response
-->
- <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
<SAP:Category>Application</SAP:Category>
<SAP:Code area="UNKNOWN">APPLICATION_ERROR</SAP:Code>
<SAP:P1 />
<SAP:P2 />
<SAP:P3 />
<SAP:P4 />
<SAP:AdditionalText>application fault</SAP:AdditionalText>
<SAP:ApplicationFaultMessage namespace="NAMESPACE REMOVED">LoginFault</SAP:ApplicationFaultMessage>
<SAP:Stack />
<SAP:Retry>M</SAP:Retry>
</SAP:Error>
and response message payload:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!-- XML Validation Inbound Channel Response
-->
- <LoginFault xmlns="NAMESPACE REMOVED">
<exceptionCode>710</exceptionCode>
<exceptionMessage>Login failed</exceptionMessage>
</LoginFault>
I have tested this in both the individual fault message mapping and the operational mapping and both test out sucessfully.
Have you used the payload from SXMB_MONI to do the above testing? If no then use the runtime payload and check your mapping. Also the error says no mapping program found in runtime cache...so have you confirmed that your cache contents are up-to-date?
Regards,
Abhishek.
Was this question ever answered?
I have a similar situation
I have a
PROXY -> XI -> SOAP
SOAP-> XI -> XI adapter
The XI to SOAP piece is Sync
The process uses a BPM as there is three scenarios and send to 3 different SOAP webservices.
One tree of the BPM looks like this
Start -> Receive Step -> Trans1 -> Send (sync to webservice) -> Tran2 (for valid messages, not fault messages) -> Send Step
Questions
To handle the fault message do I have to add another transformation step? If so where?
Thanks
Chirag
Have you followed this?
/people/jin.shin/blog/2007/05/21/handling-web-service-soap-fault-responses-in-sap-netweaver-xi
Regards,
Prateek
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
84 | |
25 | |
12 | |
9 | |
6 | |
6 | |
5 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.