on 05-14-2006 9:08 PM
Hi all,
At the moment my web service scenario is working, but with some deficiencies!!!
I explain better: I understood that receiver soap adapter needs to be appointed to the URL of WSDL. The log of my webservice started receiving calls from XI and it was possible for me to be able to see what it arrived at the Enterprise Portal (web service), but the log shows me an error in a method call, something like <b>no such method allowed</b>...
Looking to the log, I saw that the method invoked is the parameter name!!! Yes, the method name invoked from XI is equal to parameter name of my inbound interface!!!
I downloaded wsdl file and imported into XI as External Definitions and use this to create my inbound interface. My interface is very simple, it maps only one string to another and the input string name is (sendparam1_2). So, why XI calls (sendparam1_2) as a method although the truly method name (send)???
I tried a small test, with hammer blow in this wsdl file, I changed the name of input parameter to the name of method to be called. So, input parameter passed to be named (send), instead of (sendparam1_2). With this modification, the XI can invoke the web service with a method send, but any content is transferred trough input parameter and the method returns an empty value This happens because I changed the name of input parameter, trying to fix the problem of the calling method send, I fall in a new problem, the parameter (sendparam1_2) doesnt exist anymore
It would be possible this is being an error generated by web service provider in moment of wsdl creation? Something wrongly developed on web service model? Or am I forgetting configure something in XI?
Anybody faced an issue like this one?
Cheers,
Ricardo.
Hi guys,
I did a new test and I hope that somebody could help me at this time
Calling the web service directly via an external tool as a web service client using soap sender adapter, the request SOAP-ENV is:
<?xml version="1.0" encoding="UTF-8" ?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'<b>><ns1:send xmlns:ns1='prt:service:pt.edp.Async'><send_1_param2 xsi:type='xs:string'>teste</send_1_param2></ns1:send></b></SOAP-ENV:Body></SOAP-ENV:Envelope>
And it works fine!
Using the same external tool also as a web service client, but now trough XI, the SOAP-ENV request is a little bit different:
<b><ns1:send_1_param2 xmlns:ns1='prt:service:pt.edp.Async'>teste</ns1:send_1_param2></b>
It seams that method send is not being invoked, if you look to the previous SOAP-ENV you see the tag <ns1:send > before tag <ns1:send_1_param2 > I think that this tag should come into soap request invoked by XI. For one reason that I dont know, this tag doesnt come... Did I forget something, some configuration step?
Any help are appreciated.
Regards,
RP.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
If you are consuming XI webservice, in sender soap adapter, you must enable soap headers.
If there is a small change in XI webservice, the whole webdynpro model must be reimported and all recoding must be done.
Best regards,
Felix
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi
I tried with the option keep headers on Soap sender/receiver adapter and stills give me: DeliveryException: XIServer:NO_MAPPINGPROGRAM_FOUND in XI and in Portal log I have this: Method with name send_1_param2 is not defined in wsdl file
[EXCEPTION] java.lang.NoSuchMethodException
Why Xi invokes (send_1_param2) although method (send)? send_1_param2 is the parameter name not the method name
Thanks,
Ricardo.
Hi Felix,
I know that, the method that XI wants to invoke doesnt exist in the web service!!!
The web service log:
<b>05/15/2006 , 16:53:55:076 , Method with name send_1_param2 is not defined in wsdl file
[EXCEPTION]
java.lang.NoSuchMethodException
at com.sapportals.portal.prt.service.soap.processor.InvokerProcessor.extractMethodFromXML(InvokerProcessor.java:372)</b>
As you can see, Xi tries to invoke a method that is unknown for web service! The method called is (send_1_param2), but is wrong; it should be (send), because send is the right method name.
send_1_param2 is the input parameter generated by web service model and defined in WSDL file.
wsdl fraction:
- <wsdl:message name="sendRequest">
<wsdl:part name="send_1_param2" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="sendResponse">
<wsdl:part name="response" type="xsd:string" />
</wsdl:message>
- <wsdl:portType name="Async">
- <wsdl:operation name="send" parameterOrder="send_1_param2">
<wsdl:input name="send_input0" message="intf:sendRequest" />
<wsdl:output name="send_output0" message="intf:sendResponse" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="com.sap.portal.prt.soap.AsyncBinding" type="intf:Async">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="send">
<soap:operation soapAction="prt:service:pt.edp.Async.Async/send0" />
- <wsdl:input name="send_input0">
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="prt:service:pt.edp.Async" />
</wsdl:input>
- <wsdl:output name="send_output0">
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="prt:service:pt.edp.Async" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
Like I said before, my inbound interface was defined with a wsdl file as external definition and my mapping is very simple:
A string (ws_request) -> mapped -> other string (send_1_param2).
So, my question is why XI invokes (send_1_param2) although (send)???
Thanks Im really appreciating your help.
Cheers,
Ricardo.
User | Count |
---|---|
84 | |
10 | |
10 | |
9 | |
7 | |
7 | |
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.