on 05-13-2014 6:39 AM
Hello Experts,
We have an asynchronous scenario from ECC (using proxy) to a Web Service (using soap).
The soap adapter is showing that the message was processed successfully but in SXMB_MONI we get the following error:
HTTP Status Code 200 Received But Error During Response Parsing: No XI Response Received XML element {http://schemas.xmlsoap.org/soap/envelope/}Envelope missing in SOAP message header (SAP XI Extension)
In RWB, the Audit Log is:
...
Information Delivering to channel: SOAP_Receiver_CustomerStatusUpdate
Information SOAP: request message entering the adapter with user J2EE_GUEST
Information SOAP: completed the processing
Information SOAP: sending a delivery ack ...
Information SOAP: sent a delivery ack
Information The message was successfully delivered to the application using connection SOAP_http://sap.com/xi/XI/System.
Information The message status was set to DLVD.
Please advise.
Regards.
Hi All,
I created a new asynchronous web service (which was deployed on our PIQ system).
I tested it and received the same error as the original web service.
This results to a conclusion that the problem is not with the original web service exposed by IIS, rather something to do with our PID system.
Any suggestions will be appreciated.
Regards.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Mark,
As mentioned, I performed a new test to the same destination web service where the sender is SOAP.
So, Test 1: PROXY -> PI -> SOAP (fails), Test 2: SOAP -> PI -> SOAP (succeeds)
I went through the trace files of both:
For test 1, the status code returned is 202 while for test 2 the status code is 200.
Both consuming the same web service
For test 1,
============================
For test 2,
============================
Hi Effie,
Looks like there might not be any issue from Webservice. Sometimes It might be issue from Proxy side. We usually see this error in Asynchronous Proxy scenario's. Please check your proxy connections and Integration Engine Configuration in SXMB_ADM. Check the url and Role of Busines System .
Thanks
Jyothi A
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
Looks like Web Service you are using is synchronous one...Check the WS functionality by testing the same using SOAP UI tool ...you may need to tweak your scenario if there is a response received still and want to handle at PI level....
HTH
Rajesh
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Rajesh,
Thanks for your response.
The web service defined as an Asynchronous service.
I used the WSDL to generate a client in NWDS, invoked it and did not receive a response.
In the past, I used an Async scenario to invoke a web service with no issue and the requirement is an async scenario and not sync.
Regards.
Hi Mark,
I am not sure I understand your suggestion.
I look at the message in SXI_MONITOR (in PI). Under the Call Adapter -> SOAP Header nodes, there is an entry: Reliable Messaging and when I click on it, I see the following:
<!-- Call Adapter -->
<SAP:ReliableMessaging SOAP:mustUnderstand="1" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SAP:QualityOfService>ExactlyOnce</SAP:QualityOfService>
</SAP:ReliableMessaging>
If this is not what you mean, can you please give me more details as to your suggestion?
Regards.
Hi Mark,
Left window:
============
POST http://pocketlink/SapSync/CustomerStatusUpdateService.asmx HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "http://Askisfa.com/CustomerStatusUpdate"
Content-Length: 823
Host: pocketlink
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ask="http://Askisfa.com/">
<soapenv:Header/>
<soapenv:Body>
<ask:CustomerStatusUpdate>
<!--Optional:-->
<ask:Status>
<!--Optional:-->
<ask:CustomerNumber>0000960960</ask:CustomerNumber>
<!--Optional:-->
<ask:SalesOrg>1000</ask:SalesOrg>
<!--Optional:-->
<!--ask:DistChannel>?</ask:DistChannel-->
<!--Optional:-->
<!--ask:Division>?</ask:Division-->
<!--Optional:-->
<ask:StatusOld>50</ask:StatusOld>
<!--Optional:-->
<ask:StatusNew>60</ask:StatusNew>
</ask:Status>
</ask:CustomerStatusUpdate>
</soapenv:Body>
</soapenv:Envelope>
Right window:
=================
HTTP/1.1 202 Accepted
Cache-Control: private
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Tue, 13 May 2014 09:53:57 GMT
Content-Length: 0
Regards.
Hi Effi,
For HTTP 202, I think it is only supported in the sender adapter . For the receiver adapter, it expects an HTTP 200 with an empty soap envelope. See SAP Note 856597 - FAQ PI/XI SOAP Adapter under Section 6. Receiver Asynchronous Calls
"Q: What should my web service return to the adapter for
asynchronous calls?
A: Currently, the receiver adapter expects an HTTP 200 with a SOAP
envelope with an empty content for successful delivery. Any other
response will result in a XI system error and triggers retries of
the message. "
Hope this helps,
Mark
Hi Mark,
As I stated in my original post, PI receives an HTTP response with status 200:
HTTP Status Code 200 Received But Error During Response Parsing: No XI Response Received XML element {http://schemas.xmlsoap.org/soap/envelope/ }Envelope missing in SOAP message header (SAP XI Extension)
What I do not understand is the response part. In RWB, the Message Data for the SOAP receiver explicitly says that the QoS is async:
Status: Successful
Quality of Service: Exactly Once
Regards,
Hi Effie,
Later to read Mark suggestions i think that you can try to check Do Not use SOAP envelope and to generate the SOAP envelope manually via XSL for example. I have thought this because with that check the adapter wont check the WS 202 response and may be you wont get the exception.
Regards.
Hi Mark,
I went through the note you indicated.
It is kind of weird as this is the first time I encounter this kind of problem.
I developed before in other projects asynchronous PROXY -> PI --> SOAP scenarios without any issues.
Additional information that might be useful:
I failed the scenario at the inbound side (the call to the web service) by specifying a wrong server name in the channel URL.
The SOAP receiver comm channel indicated an error but still, in SXI_MONITOR I receive the same error message (HTTP Status Code 200 Received...).
As it turns out, for successful calls to the web service and failed calls, the same error happens in the Integration Engine and the same message is displayed in SXI_MONITOR.
This behavior makes me believe that the problem does not lay with the web service, rather it lays with the Adapter Engine (for SOAP adapter) communicating back with the Integration Engine.
By the way, we are using PI 7.11
Any other suggestions?
Regards.
Hi Effi,
I'm also using PI 7.11. Have you tried with the other webservices if they return an HTTP 202 with an empty body? I think for PI, it cannot recognize any other 2xx response aside from 200 since in SOAP UI it is already returning a 202.
Aside from that, it could be worth it to try 's suggestion to run it in no soap mode (via Do Not Use SOAP Envelope). Another try is to use a remote-enabled version of the function module HTTP_POST. I might experiment on it, but I do not see a free webservice that replies a 202 for a successful transaction.
Regards,
Mark
Hi Mark,
I tried using a different service which is synchronous and I did not receive any errors.
I tried 2 different asynchronous services (to the same IIS host) and both failed with the same error.
I wanted to try a completely different asynchronous web service but couldn't find one on the WWW (I saw only synchronous ones).
I also tried playing with the parameters of the comm channel using different flags without positive results.
I will probably have to develop a web service, publish it and try to consume it from PI to see if the problem is related to the IIS host or whether it is a generic asynchronous web services problem.
Regards.
Hi Effi,
Yes, synch scenarios are unaffected because they return a response . When you check the Do Not Use SOAP Envelope, you have to build the SOAP envelope via Java/XSLT mapping. You also need to use MessageTransformBean for the content-type change from application/xml to text/xml.
Regards,
Mark
Hi Mark,
Going through the procedure of checking the Do Not Use SOAP Envelope sounds like a lot of unnecessary overhead of development which I will do only as a last resort.
As I stated, I have done a lot of asynchronous scenarios to web services before without the above suggestion and experienced no issues whatsoever.
Regards.
Hi Effi,
Are you sure that your service interfaces are defined as async ones?
Regards.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
85 | |
10 | |
10 | |
10 | |
7 | |
6 | |
6 | |
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.