cancel
Showing results for 
Search instead for 
Did you mean: 

Service call exception; nested exception is: com.sap.engine.services.webser

Former Member
0 Kudos

Hi,

I am trying to call a webservice from a simple webdynpro for some reason I am getting this error,

Service call exception; nested exception is: com.sap.engine.services.webservices.jaxrpc.exceptions.XmlUnmarshalException: XML Deserialization Error. XML is not valid. Element [http://session.services.enterprise.mclarensoftware.com]<successful> is required in <createSessionReturn> but can not be found.

My WSDL looks like this,

<?xml version="1.0" encoding="UTF-8" ?>

- <wsdl:definitions targetNamespace="http://session.services.enterprise.mclarensoftware.com" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://session.services.enterprise.mclarensoftware.com" xmlns:intf="http://session.services.enterprise.mclarensoftware.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

- <!--

WSDL created by Apache Axis version: 1.3

Built on Oct 05, 2005 (05:23:37 EDT)

-->

- <wsdl:types>

- <schema elementFormDefault="qualified" targetNamespace="http://session.services.enterprise.mclarensoftware.com" xmlns="http://www.w3.org/2001/XMLSchema">

- <element name="getSession">

- <complexType>

- <sequence>

<element name="strTechnologyID" type="xsd:string" />

<element name="strConnection" type="xsd:string" />

<element name="strUserName" type="xsd:string" />

<element name="strDomain" type="xsd:string" />

</sequence>

</complexType>

</element>

- <element name="getSessionResponse">

- <complexType>

- <sequence>

<element name="getSessionReturn" type="impl:OperationResult" />

</sequence>

</complexType>

</element>

- <complexType name="OperationResult">

- <sequence>

<element name="code" type="xsd:int" />

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

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

<element name="successful" type="xsd:boolean" />

</sequence>

</complexType>

- <element name="getSessionID">

- <complexType>

- <sequence>

<element name="strTechnologyID" type="xsd:string" />

<element name="strConnection" type="xsd:string" />

<element name="strUserName" type="xsd:string" />

<element name="strDomain" type="xsd:string" />

</sequence>

</complexType>

</element>

- <element name="getSessionIDResponse">

- <complexType>

- <sequence>

<element name="getSessionIDReturn" type="xsd:string" />

</sequence>

</complexType>

</element>

- <element name="createSession">

- <complexType>

- <sequence>

<element name="strTechnologyID" type="xsd:string" />

<element name="strConnection" type="xsd:string" />

<element name="strConnectionFriendlyName" type="xsd:string" />

<element name="strUserName" type="xsd:string" />

<element name="strPassword" type="xsd:string" />

<element name="strDomain" type="xsd:string" />

</sequence>

</complexType>

</element>

- <element name="createSessionResponse">

- <complexType>

- <sequence>

<element name="createSessionReturn" type="impl:CreateSessionResult" />

</sequence>

</complexType>

</element>

- <complexType name="CreateSessionResult">

- <complexContent>

- <extension base="impl:OperationResult">

- <sequence>

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

<element maxOccurs="unbounded" name="tokens" nillable="true" type="xsd:string" />

</sequence>

</extension>

</complexContent>

</complexType>

- <element name="isSessionValid">

- <complexType>

- <sequence>

<element name="strSessionID" type="xsd:string" />

</sequence>

</complexType>

</element>

- <element name="isSessionValidResponse">

- <complexType>

- <sequence>

<element name="isSessionValidReturn" type="xsd:boolean" />

</sequence>

</complexType>

</element>

- <element name="getRepositories">

- <complexType>

- <sequence>

<element name="strSessionID" type="xsd:string" />

</sequence>

</complexType>

</element>

- <element name="getRepositoriesResponse">

- <complexType>

- <sequence>

<element name="getRepositoriesReturn" type="impl:GetRepositoriesResult" />

</sequence>

</complexType>

</element>

- <complexType name="GetRepositoriesResult">

- <complexContent>

- <extension base="impl:OperationResult">

- <sequence>

<element maxOccurs="unbounded" name="repositories" nillable="true" type="xsd:string" />

</sequence>

</extension>

</complexContent>

</complexType>

- <element name="getAvailableConnections">

<complexType />

</element>

- <element name="getAvailableConnectionsResponse">

- <complexType>

- <sequence>

<element name="getAvailableConnectionsReturn" type="impl:GetConnectionsResult" />

</sequence>

</complexType>

</element>

- <complexType name="SerializableConnectionID">

- <sequence>

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

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

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

</sequence>

</complexType>

- <complexType name="GetConnectionsResult">

- <complexContent>

- <extension base="impl:OperationResult">

- <sequence>

<element maxOccurs="unbounded" name="ids" nillable="true" type="impl:SerializableConnectionID" />

</sequence>

</extension>

</complexContent>

</complexType>

- <element name="getAvailableConnections2">

- <complexType>

- <sequence>

<element name="strTechnologyID" type="xsd:string" />

</sequence>

</complexType>

</element>

- <element name="getAvailableConnections2Response">

- <complexType>

- <sequence>

<element name="getAvailableConnections2Return" type="impl:GetConnectionsResult" />

</sequence>

</complexType>

</element>

- <element name="killSession">

- <complexType>

- <sequence>

<element name="strSessionID" type="xsd:string" />

</sequence>

</complexType>

</element>

- <element name="killSessionResponse">

<complexType />

</element>

- <element name="validateCredentials">

- <complexType>

- <sequence>

<element name="strTechnologyID" type="xsd:string" />

<element name="strConnection" type="xsd:string" />

<element name="strUserName" type="xsd:string" />

<element name="strPassword" type="xsd:string" />

<element name="strDomain" type="xsd:string" />

</sequence>

</complexType>

</element>

- <element name="validateCredentialsResponse">

- <complexType>

- <sequence>

<element name="validateCredentialsReturn" type="impl:OperationResult" />

</sequence>

</complexType>

</element>

</schema>

</wsdl:types>

- <wsdl:message name="isSessionValidRequest">

<wsdl:part element="impl:isSessionValid" name="parameters" />

</wsdl:message>

- <wsdl:message name="getAvailableConnectionsRequest">

<wsdl:part element="impl:getAvailableConnections" name="parameters" />

</wsdl:message>

- <wsdl:message name="validateCredentialsResponse">

<wsdl:part element="impl:validateCredentialsResponse" name="parameters" />

</wsdl:message>

- <wsdl:message name="getSessionIDResponse">

<wsdl:part element="impl:getSessionIDResponse" name="parameters" />

</wsdl:message>

- <wsdl:message name="getSessionResponse">

<wsdl:part element="impl:getSessionResponse" name="parameters" />

</wsdl:message>

- <wsdl:message name="createSessionResponse">

<wsdl:part element="impl:createSessionResponse" name="parameters" />

</wsdl:message>

- <wsdl:message name="getAvailableConnections2Response">

<wsdl:part element="impl:getAvailableConnections2Response" name="parameters" />

</wsdl:message>

- <wsdl:message name="getAvailableConnectionsResponse">

<wsdl:part element="impl:getAvailableConnectionsResponse" name="parameters" />

</wsdl:message>

- <wsdl:message name="getRepositoriesRequest">

<wsdl:part element="impl:getRepositories" name="parameters" />

</wsdl:message>

- <wsdl:message name="killSessionRequest">

<wsdl:part element="impl:killSession" name="parameters" />

</wsdl:message>

- <wsdl:message name="getSessionIDRequest">

<wsdl:part element="impl:getSessionID" name="parameters" />

</wsdl:message>

- <wsdl:message name="validateCredentialsRequest">

<wsdl:part element="impl:validateCredentials" name="parameters" />

</wsdl:message>

- <wsdl:message name="getSessionRequest">

<wsdl:part element="impl:getSession" name="parameters" />

</wsdl:message>

- <wsdl:message name="killSessionResponse">

<wsdl:part element="impl:killSessionResponse" name="parameters" />

</wsdl:message>

- <wsdl:message name="createSessionRequest">

<wsdl:part element="impl:createSession" name="parameters" />

</wsdl:message>

- <wsdl:message name="getAvailableConnections2Request">

<wsdl:part element="impl:getAvailableConnections2" name="parameters" />

</wsdl:message>

- <wsdl:message name="isSessionValidResponse">

<wsdl:part element="impl:isSessionValidResponse" name="parameters" />

</wsdl:message>

- <wsdl:message name="getRepositoriesResponse">

<wsdl:part element="impl:getRepositoriesResponse" name="parameters" />

</wsdl:message>

- <wsdl:portType name="SessionService">

- <wsdl:operation name="getSession">

<wsdl:input message="impl:getSessionRequest" name="getSessionRequest" />

<wsdl:output message="impl:getSessionResponse" name="getSessionResponse" />

</wsdl:operation>

- <wsdl:operation name="getSessionID">

<wsdl:input message="impl:getSessionIDRequest" name="getSessionIDRequest" />

<wsdl:output message="impl:getSessionIDResponse" name="getSessionIDResponse" />

</wsdl:operation>

- <wsdl:operation name="createSession">

<wsdl:input message="impl:createSessionRequest" name="createSessionRequest" />

<wsdl:output message="impl:createSessionResponse" name="createSessionResponse" />

</wsdl:operation>

- <wsdl:operation name="isSessionValid">

<wsdl:input message="impl:isSessionValidRequest" name="isSessionValidRequest" />

<wsdl:output message="impl:isSessionValidResponse" name="isSessionValidResponse" />

</wsdl:operation>

- <wsdl:operation name="getRepositories">

<wsdl:input message="impl:getRepositoriesRequest" name="getRepositoriesRequest" />

<wsdl:output message="impl:getRepositoriesResponse" name="getRepositoriesResponse" />

</wsdl:operation>

- <wsdl:operation name="getAvailableConnections">

<wsdl:input message="impl:getAvailableConnectionsRequest" name="getAvailableConnectionsRequest" />

<wsdl:output message="impl:getAvailableConnectionsResponse" name="getAvailableConnectionsResponse" />

</wsdl:operation>

- <wsdl:operation name="getAvailableConnections2">

<wsdl:input message="impl:getAvailableConnections2Request" name="getAvailableConnections2Request" />

<wsdl:output message="impl:getAvailableConnections2Response" name="getAvailableConnections2Response" />

</wsdl:operation>

- <wsdl:operation name="killSession">

<wsdl:input message="impl:killSessionRequest" name="killSessionRequest" />

<wsdl:output message="impl:killSessionResponse" name="killSessionResponse" />

</wsdl:operation>

- <wsdl:operation name="validateCredentials">

<wsdl:input message="impl:validateCredentialsRequest" name="validateCredentialsRequest" />

<wsdl:output message="impl:validateCredentialsResponse" name="validateCredentialsResponse" />

</wsdl:operation>

</wsdl:portType>

- <wsdl:binding name="sessionSoapBinding" type="impl:SessionService">

<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />

- <wsdl:operation name="getSession">

<wsdlsoap:operation soapAction="" />

- <wsdl:input name="getSessionRequest">

<wsdlsoap:body use="literal" />

</wsdl:input>

- <wsdl:output name="getSessionResponse">

<wsdlsoap:body use="literal" />

</wsdl:output>

</wsdl:operation>

- <wsdl:operation name="getSessionID">

<wsdlsoap:operation soapAction="" />

- <wsdl:input name="getSessionIDRequest">

<wsdlsoap:body use="literal" />

</wsdl:input>

- <wsdl:output name="getSessionIDResponse">

<wsdlsoap:body use="literal" />

</wsdl:output>

</wsdl:operation>

- <wsdl:operation name="createSession">

<wsdlsoap:operation soapAction="" />

- <wsdl:input name="createSessionRequest">

<wsdlsoap:body use="literal" />

</wsdl:input>

- <wsdl:output name="createSessionResponse">

<wsdlsoap:body use="literal" />

</wsdl:output>

</wsdl:operation>

- <wsdl:operation name="isSessionValid">

<wsdlsoap:operation soapAction="" />

- <wsdl:input name="isSessionValidRequest">

<wsdlsoap:body use="literal" />

</wsdl:input>

- <wsdl:output name="isSessionValidResponse">

<wsdlsoap:body use="literal" />

</wsdl:output>

</wsdl:operation>

- <wsdl:operation name="getRepositories">

<wsdlsoap:operation soapAction="" />

- <wsdl:input name="getRepositoriesRequest">

<wsdlsoap:body use="literal" />

</wsdl:input>

- <wsdl:output name="getRepositoriesResponse">

<wsdlsoap:body use="literal" />

</wsdl:output>

</wsdl:operation>

- <wsdl:operation name="getAvailableConnections">

<wsdlsoap:operation soapAction="" />

- <wsdl:input name="getAvailableConnectionsRequest">

<wsdlsoap:body use="literal" />

</wsdl:input>

- <wsdl:output name="getAvailableConnectionsResponse">

<wsdlsoap:body use="literal" />

</wsdl:output>

</wsdl:operation>

- <wsdl:operation name="getAvailableConnections2">

<wsdlsoap:operation soapAction="" />

- <wsdl:input name="getAvailableConnections2Request">

<wsdlsoap:body use="literal" />

</wsdl:input>

- <wsdl:output name="getAvailableConnections2Response">

<wsdlsoap:body use="literal" />

</wsdl:output>

</wsdl:operation>

- <wsdl:operation name="killSession">

<wsdlsoap:operation soapAction="" />

- <wsdl:input name="killSessionRequest">

<wsdlsoap:body use="literal" />

</wsdl:input>

- <wsdl:output name="killSessionResponse">

<wsdlsoap:body use="literal" />

</wsdl:output>

</wsdl:operation>

- <wsdl:operation name="validateCredentials">

<wsdlsoap:operation soapAction="" />

- <wsdl:input name="validateCredentialsRequest">

<wsdlsoap:body use="literal" />

</wsdl:input>

- <wsdl:output name="validateCredentialsResponse">

<wsdlsoap:body use="literal" />

</wsdl:output>

</wsdl:operation>

</wsdl:binding>

- <wsdl:service name="SessionService">

- <wsdl:port binding="impl:sessionSoapBinding" name="session">

<wsdlsoap:address location="http://localhost:50100/mclaren/services/session" />

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

The communication on wire seems ok

REQUEST:

POST http://localhost:50100/mclaren/services/session HTTP/1.1

Host: localhost:50100

Content-Type: text/xml; charset=UTF-8

Connection: close

Content-Length: 869

SOAPAction: ""

<?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:Header><sapsess:Session xmlns:sapsess="http://www.sap.com/webas/630/soap/features/session/"><enableSession>true</enableSession></sapsess:Session></SOAP-ENV:Header><SOAP-ENV:Body><pns:createSession xmlns:pns='http://session.services.enterprise.mclarensoftware.com'><pns:strTechnologyID>filenet</pns:strTechnologyID><pns:strConnection>http://mclglaweb006:8008/ApplicationEngine/xcmisasoap.dll</pns:strConnection><pns:strConnectionFriendlyName>1</pns:strConnectionFriendlyName><pns:strUserName>davidp</pns:strUserName><pns:strPassword>nimbus</pns:strPassword><pns:strDomain>1</pns:strDomain></pns:createSession></SOAP-ENV:Body></SOAP-ENV:Envelope>

RESPONSE:

HTTP/1.1 200 OK

Connection: close

Server: SAP J2EE Engine/7.00

Set-Cookie: saplb_*=(J2EE13316300)13316350; Version=1; Path=/

Content-Type: text/xml; charset=utf-8

Date: Thu, 29 Jun 2006 11:28:15 GMT

Set-Cookie: JSESSIONID=(J2EE13316300)ID1369929150DB02512194245365948642End; Version=1; Domain=Server; Path=Application

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><createSessionResponse xmlns="http://session.services.enterprise.mclarensoftware.com"><createSessionReturn><code>0</code><detail xsi:nil="true"/><message xsi:nil="true"/><sessionID>filenet;http://mclglaweb006:8008/ApplicationEngine/xcmisasoap.dll;davidp;1</sessionID><successful>true</successful><tokens>EEAdmins</tokens><tokens>Content Engine Administrators</tokens><tokens>EEDocumentControllers</tokens><tokens>EEExternalWorkers</tokens><tokens>EECADManagers</tokens><tokens>EECADDesigners</tokens><tokens>EECompanyWorkers</tokens><tokens>Content Engine Users</tokens><tokens>EEManagers</tokens><tokens>EEEngineers</tokens><tokens>EEReviewProUsers</tokens><tokens>discipline_c_team</tokens><tokens>project_test2_team</tokens><tokens>project_test1_team</tokens><tokens>project_test1-c_team</tokens><tokens>Domain Users</tokens></createSessionReturn></createSessionResponse></soapenv:Body></soapenv:Envelope>

Any ideas?

Accepted Solutions (0)

Answers (1)

Answers (1)

suresh_krishnamoorthy
Active Contributor
0 Kudos

Hi Fahad,

First Check the web service whether its working in web service navigator.

Deserialization Error because web service signature change:

Once you generated the Webdynpro model from web service you should not change the web service signature

if you change the web service signature you will get this exception

com.sap.engine.services.webservices.jaxrpc.exceptions.XmlUnmarshalException: XML Deserialization Error.

To solve this you have to re generated the webdynpro model again with latest web service.

I hope this will solve

Regards

Suresh