on 06-29-2006 1:20 PM
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?
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
86 | |
10 | |
10 | |
9 | |
6 | |
6 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.