Announcement

Collapse
No announcement yet.

Fehler mit Web Service Client für "simplen" Web Service

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fehler mit Web Service Client für "simplen" Web Service

    Hallo,

    ich versuche gerade einen simplen Web Service Client für folgenden Web Service zu schreiben:
    WSDL: http://xi.esworkplace.sap.com:50200/...ervice/CS?wsdl
    Endpoint: http://xi.esworkplace.sap.com:50200/...style=document

    Beim Aufruf der Operation getAllClassificationSystems(1, 1, 1, 1) bekomme ich folgenden Fehler:
    PHP Code:
    An error occurred invoking the specified method.
    nested exception is:
    org.xml.sax.SAXExceptionInvalid element in api_v1.classification.sap.com.ClassificationSystemList actualCount 



    Ich habe den web service mit JCows Generic Web Service Client (http://www.jcows.org/?page=4〈=de) getestet. Wenn ich WTP von Eclipse benutze und eine simplen Web Service Client generieren lasse (also die Proxies usw) dann bekomme ich auch den o.g. Fehler.
    Obwohl man im TCPmonitor sehen kann, dass ein sinnvolle SOAP response gelierfert wird. Das Problem liegt tritt also beim Parsen / Deserialisieren auf. Die SOAP response TCPmonitor sieht so aus:

    SOAP response:
    PHP Code:
    <SOAP-ENV:Envelope xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <
    SOAP-ENV:Header>
    <
    wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity- secext-1.0.xsd">
    <
    wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-u tility-1.0.xsd">
    <
    wsu:Created>2007-05-16T13:10:10Z</wsu:Created>
    <
    wsu:Expires>2007-05-16T13:10:40Z</wsu:Expires>
    </
    wsu:Timestamp>
    </
    wsse:Security>
    </
    SOAP-ENV:Header>
    <
    SOAP-ENV:Body>
    <
    ns1:ClassificationSystemList version="10736" xmlns:rn0="http://schemas.xmlsoap.org/soap/encoding/" xmlns:rn1="java:sap/standard" xmlns:rn2="urn:uddi-org:vscache_v3" xmlns:rn3="urn:java/lang" xmlns:rn5="urn:uddi-org:api_v3" xmlns:rn4="urn:com.sap.classification.transport" xmlns:ns1="urn:com.sap.classification:api_v1">
    <
    ns1:listDesc>
    <
    ns1:actualCount>9</ns1:actualCount>
    <
    ns1:includedCount>1</ns1:includedCount>
    <
    ns1:listHead>1</ns1:listHead>
    </
    ns1:listDesc>
    <
    ns1:ClassificationSystem valuesVersion="12">
    <
    ns1:id>uddi:uddi.sap.com:categorization:business-object</ns1:id>
    <
    ns1:name>Business object</ns1:name>
    <
    ns1:description>The SAP business object UDDI category system and SR classification systemBusiness objects are part of the Enterprise Service Architecture meta-model.</ns1:description>
    <
    ns1:type>FLAT</ns1:type>
    <
    ns1:isPredifined>true</ns1:isPredifined>
    <
    ns1:readOnly>false</ns1:readOnly>
    <
    ns1:onlyOnce>false</ns1:onlyOnce>
    <
    ns1:mustHaveDesc>false</ns1:mustHaveDesc>
    <
    ns1:normalizeCodes>false</ns1:normalizeCodes>
    <
    ns1:mTimeCustModService>true</ns1:mTimeCustModService>
    <
    ns1:mTimeSapModService>true</ns1:mTimeSapModService>
    <
    ns1:ideCusModService>true</ns1:ideCusModService>
    <
    ns1:ideCustPrgService>true</ns1:ideCustPrgService>
    <
    ns1:ideSapModService>true</ns1:ideSapModService>
    <
    ns1:ideSapPrgService>true</ns1:ideSapPrgService>
    </
    ns1:ClassificationSystem>
    </
    ns1:ClassificationSystemList>
    </
    SOAP-ENV:Body>
    </
    SOAP-ENV:Envelope



    Der abgesendete SOAP request sieht so aus:

    SOAP request:
    PHP Code:
    <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>
    <
    getAllClassificationSystems xmlns="urn:com.sap.classification:api_v1">
    <
    listHead xsi:type="xsd:int">1</listHead>
    <
    maxRows xsi:type="xsd:int">1</maxRows>
    <
    version xsi:type="xsd:long">1</version>
    <
    sortType xsi:type="xsd:int">1</sortType>
    </
    getAllClassificationSystems>
    </
    soapenv:Body>
    </
    soapenv:Envelope


    Mit dem Eclipse-basierten WebSphere Integration Developer von IBM sieht der Fehler auch ähnlich aus.

    Error message:
    PHP Code:
    WebServicesFault
    faultCode
    hxxp://schemas.xmlsoap.org/soap/envelope/ Server.generalException
    faultStringorg.xml.sax.SAXExceptionWSWS3047EErrorCannot deserialize element actualCount of bean classification.api_v1.sap.com.ClassificationSystemList_Type.
    Child element actualCount does not belong in namespace urn:com.sap.classification:api_v1.
    Most likelya third-party web services platform has sent an incorrect SOAP message.
    faultActornull
    faultDetail
    :

    org.xml.sax.SAXExceptionWSWS3047EErrorCannot deserialize element actualCount of bean classification.api_v1.sap.com.ClassificationSystemList_Type.
    Child element actualCount does not belong in namespace urn:com.sap.classification:api_v1.
    Most likelya third-party web services platform has sent an incorrect SOAP message.
    at com.ibm.ws.webservices.engine.WebServicesFault.makeFault(WebServicesFault.java203)
    at com.ibm.ws.webservices.engine.SOAPPart._getSOAPEnvelope(SOAPPart.java:1055)
    at com.ibm.ws.webservices.engine.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:605)
    at com.ibm.ws.webservices.engine.Message.getSOAPEnvelope(Message.java:461)
    at com.ibm.ws.webservices.engine.handlers.jaxrpc.JAXRPCSOAPHandler.checkSOAPSemant ics(JAXRPCSOAPHandler.java:298)
    at com.ibm.ws.webservices.engine.handlers.jaxrpc.JAXRPCSOAPHandler.access$000(JAXR PCSOAPHandler.java:75)
    at com.ibm.ws.webservices.engine.handlers.jaxrpc.JAXRPCSOAPHandler$2.invoke(JAXRPC SOAPHandler.java:173)
    at com.ibm.ws.webservices.engine.PivotHandlerWrapper.invoke(PivotHandlerWrapper.ja va:329)
    at com.ibm.ws.webservices.engine.WebServicesEngine.invoke(WebServicesEngine.java:2 83)
    at com.ibm.ws.webservices.engine.client.Connection.invokeEngine(Connection.java:79 8)
    at com.ibm.ws.webservices.engine.client.Connection.invoke(Connection.java:693)
    at com.ibm.ws.webservices.engine.client.Connection.invoke(Connection.java:644)
    at com.ibm.ws.webservices.engine.client.Connection.invoke(Connection.java:472)
    at com.ibm.ws.webservices.engine.client.Stub$Invoke.invoke(Stub.java:818)
    at ClassificationServiceWsd.CSBindingStub.getAllClassificationSystems(CSBindingStu b.java:127)
    at ClassificationServiceWsd.ClassificationServiceViProxy.getAllClassificationSyste ms(ClassificationServiceViProxy.java:64)
    at temp.CsReader3.main(CsReader3.java:42)
    Caused byorg.xml.sax.SAXExceptionWSWS3047EErrorCannot deserialize element actualCount of bean classification.api_v1.sap.com.ClassificationSystemList_Type.
    Child element actualCount does not belong in namespace urn:com.sap.classification:api_v1.
    Most likelya third-party web services platform has sent an incorrect SOAP message.
    at com.ibm.ws.webservices.engine.encoding.ser.BeanDeserializer.onStartChild(BeanDe serializer.java:359)
    at com.ibm.ws.webservices.engine.events.DEventProcessor.onSimpleChild(DEventProces sor.java:240)
    at com.ibm.ws.webservices.engine.encoding.ser.BeanDeserializer.onSimpleChild(BeanD eserializer.java:576)
    at com.ibm.ws.webservices.engine.events.P2DConverter.flush(P2DConverter.java:767)< brat com.ibm.ws.webservices.engine.events.P2DConverter.endElement(P2DConverter.java410)
    at sax.SAX2DocumentEntityParserBase.endElementAction(Unknown Source)
    at util.DocumentEntityParserBase.endElementEvent(Unknown Source)
    at com.ibm.xml.b2b.scan.latin.LatinWFCDocumentScanner.scanEndElement(Unknown Source)
    at com.ibm.xml.b2b.scan.latin.LatinWFCDocumentScanner.scanContent(Unknown Source)
    at com.ibm.xml.b2b.scan.latin.LatinWFCDocumentScanner.scanDocument(Unknown Source)
    at sax.latin.LatinWFCSAX2DocumentEntityParser.scanDocument(Unknown Source)
    at util.DocumentEntityParserBase.parse(Unknown Source)
    at sax.SAX2DocumentEntityParserBase.parseEntity(Unknown Source)
    at sax.SAX2DocumentEntityParserBase.parse(Unknown Source)
    at javax.xml.parsers.SAXParser.parse(Unknown Source)
    at com.ibm.ws.webservices.engine.utils.WebServicesParser.parse(WebServicesParser.j ava:274)
    at com.ibm.ws.webservices.engine.encoding.DeserializationContextImpl.parse(Deseria lizationContextImpl.java:268)
    at com.ibm.ws.webservices.engine.SOAPPart._getSOAPEnvelope(SOAPPart.java:1029)
    ... 
    15 more 

    Liegt das Problem bei den generierten Proxies für den Web Service Client, also bei Axis WSDL2Java? Oder gibt es ein Problem mit der WSDL, die nicht der empfangenen SOAP response entspricht? Oder liegt doch ein Problem mit Namespaces oder anderem vor?


    Vielen Dank für jegliche Art von Hilfe!
Working...
X