cancel
Showing results for 
Search instead for 
Did you mean: 

Import RPC-style WSDL

Former Member
0 Kudos

Hello!

I currently implement a RFC -> RFC adapter -> XI -> SOAP adapter -> Web Service scenario. I have imported the WSDL of the Web Service as External Definition into the Integration Repository to use it for the RFC <-> Web Service mapping within the graphical mapping tool.

Until now I only have imported document-style WSDL and there never have been any problems. Now the WSDL is RPC-style which means that the messages described by the <wsdl:types>...</wsdl:types> part should be enclosed by an additonal structure describing the Web Service operation to be executed.

However, in the graphical mapping tool the structure for the Web Service operation is missing and thus the Web Service call cannot be executed. How can I solve this problem without changing the WSDL or creating an additional XLST or Java mapping?

It seems that there is no problem with the WSDL. When I loaded it with the Web Service Navigator test tool of the SAP Web Application Server the structure describing the Web Service operation has been generated in the request message.

Regards, Tanja Schättler

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Tanja

Check this note 856597, it even has some examples of WSDL documents and sample SOAP messages that illustrate how one can write an equivalent WSDL in another style.

A snippet from the note,

"Q: Can I convert an RPC styled WSDL to a document styled WSDL?

A: It is difficult to answer yes or no because the answer depends on the WSDL instance and the implementation of the code that binds the XML instance to some native object. The problem comes from the fact that these two styles describe web services in different layers. The document style WSDL describes how one can bind an XML document to the SOAP message format. In contrast, the RPC style WSDL describes how one can bind an object to the SOAP message format. One can imagine that this works in two steps: first representing the object as an XML document and then binding this XML document to the SOAP message format. How this first step works is controlled by the SOAP encoding name. For the standard encoding specified in the SOAP specification, most objects can be easily described in an equivalent XML schema. Some special objects such as references and arrays must be represented by some special rules and some additional meta information in XML. This implies that these additional attributes and elements must also be described in the XML schema and the document style based proxy must set these values in the instance appropriately.

One must however note that even if one has an equivalent document style WSDL, this does not automatically guarantees the interoperability. Some RPC styled service implementations have significant interoperability problems such as requiring the xsi:type attribute for every element or the SOAP encoding attribute at some particular element. If one has to call such non conformant SOAP service, one must adjust the message accordingly.

Attachment wsdl_style_samples. zip contains some examples of WSDL documents and sample SOAP messages that illustrate how one can write an equivalent WSDL in another style.

Related Questions "Does the RPC or Document style in WSDL play a role in the SOAP adapter?"

cheers

Sameer

Former Member
0 Kudos

Hello!

> Check this note 856597, it even has some examples of

> WSDL documents and sample SOAP messages that

> illustrate how one can write an equivalent WSDL in

> another style.

The WSDL should not be changed. It is also used by other applications and according to the developers of the Web Service it would cause a lot of effort on their side to change it from RPC- to document-style.

From the other replies I understood that RPC-style WSDL will not be supported until SP16 so I will have to write an additional XSLT or Java mapping to include the missing Web Service operation.

Regards, Tanja

Former Member
0 Kudos

Tanja,

I understand that it is difficult to modify an already existing web service. Still, you may try to convince the developers that document/literal is the way to go:

- preferred by Microsoft (and SAP)

- preferred in WS-I basic profile

With document/literal, you start from an XML Schema and use that schema to define the payload. Rpc/encoded dates back from the time that XML Schema was not fully mature. Maybe these arguments give you some "ammunition" during your discussion with your co-developers.

Good luck. Kind regards, Guy Crets

PS: I'll be talking about secure and reliable web services at the JavaPolis conference, http://www.javapolis.com/confluence/display/JP05/Guy+Crets

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi Tanja,

in SP16 a better support for rpc-style in External Definitions will be included. Maybe this will solve your problem.

Greetings

Stephan

Former Member
0 Kudos

Hi Stephan,

I have the same problem as Tanja. Can you point me to SP16?

Where can I find specific documentation from SAP to point out XI's limitation when dealing with RPC-style web services?

Thanks

Former Member
0 Kudos

Will there also be support for RPC style Web Services in Web Serices on an ABAP and Java WebAS with SP16?

Former Member
0 Kudos

Tanja,

As far as I know, the SOAP adapter of XI does NOT support rpc/encoded web services.

Kind regards, Guy Crets