cancel
Showing results for 
Search instead for 
Did you mean: 

Using EP 6.0 SP2 UME Webservice from Web Dynpro

Former Member
0 Kudos

After importing the UME Web Service of an EP 6.0 SP2 installation, I am getting parsing errors during deserialization of the response, when calling the GetUser0() web service method on the model.

The error message reads as follows :

Service call exception; nested exception is: com.sap.engine.services.webservices.jaxrpc.exceptions.XmlUnmarshalException: XML Deserialization Error. XML is not valid. Node <DisplayName> child of <response> not described in Schema

Apparently the response tag <DisplayName> is not recognized as part of the Schema the proxy is using. Is this a bug in the proxy generator. Has anybody had similar problems. Are there known limitations on the use of External Web Services in a Web Dynpro scenario when using Netweaver Developer Workplace at patch level 2.0.8 (Netweaver stack level 05). ?

Thanks in advance for your input.

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi,

from my point of view the response does not fit to the WSDL of the web service.

I had similar problems with other web services, and the only solution I found was to adjust the WSDL to the real response and to reimport the model after that.

Best regards

Jochen

Former Member
0 Kudos

Jochen,

which brings up the next question : is there an easy way of checking what the actual response looks like ? Are there any tools available to look at the raw data returned by the invoked web service ?

Former Member
0 Kudos

Another thought about this :

It's the deserialization that fails saying that the <DisplayName> child of <response> is not defined in the schema. Shouldn't we read that as follows : the response received indeed does include a tag named <DisplayName>, but there is no way of mapping this to the class structure of the generated proxy so that this value can be used to rehydrate an instance of that class with it.

Now, if we look at the WSDL file for the UME Web Service we find this for the GetUser0 method's response message :

- <wsdl:message name="getUserResponse">

<wsdl:part name="response" type="tns0:IUserInfo" />

</wsdl:message>

The response is of type IUserInfo. This type is defined in the WSDL file as outlined below :

- <complexType name="IUserInfo">

- <sequence>

<b> <element name="DisplayName" nillable="true" type="xsd:string" /></b> <element name="Locale" nillable="true" type="tns1:Locale" />

<element name="Title" nillable="true" type="xsd:string" />

<element name="Groups" nillable="true" type="intf:ArrayOf_xsd_string" />

<element name="UniqueName" nillable="true" type="xsd:string" />

<element name="Roles" nillable="true" type="intf:ArrayOf_xsd_string" />

<element name="Email" nillable="true" type="intf:ArrayOf_xsd_string" />

<element name="UniqueId" nillable="true" type="xsd:string" />

<element name="FirstName" nillable="true" type="xsd:string" />

<element name="LastName" nillable="true" type="xsd:string" />

<element name="Company" nillable="true" type="xsd:string" />

</sequence>

</complexType>

The WSDL definition for IUserInfo clearly does have this elment.

Another thing : I'm using the exact same web service from a .Net web service client. The proxies generated with the Visual Studio .Net tools do not throw this error. Which raises the question : is it indeed a WSDL problem or is there a bug in the proxy generation in NW DS ?

Former Member
0 Kudos

I found the cause and the solution.

The problem was indeed the WSDL file delivered with the portal.

The IUserInfo type is defined with a different sequence of elements than the actual response message received from the webservice.

The solution is to just put all the elements in the right order. I used a network sniffer to look at the raw data of the response. The correct sequence should be as outlined below

<Locale></Locale>

<Groups></Groups>

<DisplayName></DisplayName>

<Roles></Roles>

<Company></Company>

<UniqueId></UniqueId>

<Email></Email>

<Title></Title>

<UniqueName></UniqueName>

<LastName></LastName>

</FirstName></FirstName>

After applying the correction, you have to reimport the model from the corrected wsdl file.

Former Member
0 Kudos

This is a very old post, but it really got my pain away which I was suffering for days! Thank you very much Theo..