cancel
Showing results for 
Search instead for 
Did you mean: 

No such method allowedu0085

Former Member
0 Kudos

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) doesn’t 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.

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

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 don’t know, this tag doesn’t come... Did I forget something, some configuration step?

Any help are appreciated.

Regards,

RP.

Former Member
0 Kudos

Hi all,

I fixed the problem!

Solution ->

Cheers,

Ricardo.

Message was edited by: Ricardo Quintino

Former Member
0 Kudos

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

Former Member
0 Kudos

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.

Former Member
0 Kudos

Hey,

Delivery exception simply (mostly) means that the response got on inbound (receiver) is not able to match/identify the XML/XSD schema (data type) defined.

Check message mapping once again!

Best regards,

Felix

Former Member
0 Kudos

Hi Felix,

I know that, the method that XI wants to invoke doesn’t 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 I’m really appreciating your help.

Cheers,

Ricardo.