Thats kind of strange, because Axis and SOAP::Lite - both claiming the conformance with SOAP 1.1 and WSDL 1.1 standards and even if I understand issues related to serealization/deserealization of complex types as hashrefs , but still, the passing around some array of strings or even two strings should be straightforward ( actualy the client written in Python works without any problems with the same SOAP::Lite service). --Maxim
--> -----Original Message----- --> From: Anne Thomas Manes [mailto:[EMAIL PROTECTED] --> Sent: Friday, April 08, 2005 5:04 PM --> To: axis-user@ws.apache.org --> Subject: Re: SOAP::Lite interoperability question --> --> --> Ah. Well, you see, that's the problem. SOAP::Lite is generating a --> message that isn't described by the WSDL. Based on the WSDL, Axis is --> expecting the messages to contain elements called <greeting> and --> <second>. (SOAP permits the server to generate generic elements, but --> if it does, it should specify those generic elements in the WSDL --> definition.) --> --> When you say that the names are generated on the fly, does that mean --> that they might be different every time you invoke the service? That --> doesn't really make any sense. Otherwise no one would ever be able to --> interoperate with SOAP::Lite. --> --> Either you need to convince SOAP::Lite to generate messages that --> correspond to the WSDL, or you need to modify the WSDL to correspond --> to what SOAP:Lite generates. --> --> Anne --> --> On Apr 8, 2005 5:27 PM, Maxim Grigoriev <[EMAIL PROTECTED]> wrote: --> > Those names are generated on fly by SOAP::Lite. The --> corresponding WSDL ( --> > created by SOAEditor ) --> > describes it as: --> > <wsdl:message name="sayHelloResponse"> --> > <wsdl:part name="greeting" type="xsd:string"/> --> > <wsdl:part name="second" type="xsd:string"/> --> > </wsdl:message> --> > --------------------- --> > below is part of debugging info from axis client when it parses the --> > response from the SOAP::Lite server ( sorry but its a long listing): --> > ------------------------------------------------------------------ --> > <?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><ns1:sayHello --> > soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" --> > xmlns:ns1="lsui"><name xsi:type="xsd:string --> > ">test</name></ns1:sayHello></soapenv:Body></soapenv:Envelope> --> > - HTTP/1.1 200 OK --> > - Date Fri, 08 Apr 2005 19:47:05 GMT --> > - Server Apache/2.0.53 (Unix) mod_perl/1.99_09 Perl/v5.8.0 --> mod_ssl/2.0.53 --> > OpenSSL/0.9.7a --> > - SOAPServer SOAP::Lite/Perl/0.65_3 --> > - Content-Length 554 --> > - Connection close --> > - Content-Type text/xml; charset=utf-8 --> > - Enter: SOAPPart ctor(FORM_INPUTSTREAM) --> > - org.apache.axis.i18n.resource::handleGetObject(setMsgForm) --> > - Setting current message form to: FORM_INPUTSTREAM --> (currentMessage is now --> > org.apache.axis.transport.http.SocketInputStream) --> > - Exit: SOAPPart ctor() --> > - org.apache.axis.i18n.resource::handleGetObject(xmlRecd00) --> > - --> > XML received: --> > - ----------------------------------------------- --> > - Enter: SOAPPart::getAsSOAPEnvelope() --> > - org.apache.axis.i18n.resource::handleGetObject(currForm) --> > - current form is FORM_INPUTSTREAM --> > - org.apache.axis.i18n.resource::handleGetObject(pushHandler00) --> > - Pushing handler [EMAIL PROTECTED] --> > - Enter: DeserializationContext::startPrefixMapping(xsi, --> > http://www.w3.org/2001/XMLSchema-instance) --> > - NSPush (32) --> > - NSPush (32) --> > - Exit: DeserializationContext::startPrefixMapping() --> > - Enter: DeserializationContext::startPrefixMapping(soapenc, --> > http://schemas.xmlsoap.org/soap/encoding/) --> > - NSPush (32) --> > - Exit: DeserializationContext::startPrefixMapping() --> > - Enter: DeserializationContext::startPrefixMapping(xsd, --> > http://www.w3.org/2001/XMLSchema) --> > - NSPush (32) --> > - Exit: DeserializationContext::startPrefixMapping() --> > - Enter: DeserializationContext::startPrefixMapping(soap, --> > http://schemas.xmlsoap.org/soap/envelope/) --> > - NSPush (32) --> > - Exit: DeserializationContext::startPrefixMapping() --> > - Enter: --> > --> DeserializationContext::startElement(http://schemas.xmlsoap.org/ --> soap/envelop --> > e/, Envelope) --> > - org.apache.axis.i18n.resource::handleGetObject(pushHandler00) --> > - Pushing handler [EMAIL PROTECTED] --> > - Pushing element Envelope --> > - Exit: DeserializationContext::startElement() --> > - Enter: --> > --> DeserializationContext::startElement(http://schemas.xmlsoap.org/ --> soap/envelop --> > e/, Body) --> > - org.apache.axis.i18n.resource::handleGetObject(pushHandler00) --> > - Pushing handler [EMAIL PROTECTED] --> > - org.apache.axis.i18n.resource::handleGetObject(newElem00) --> > - New MessageElement ([EMAIL PROTECTED]) named --> > {soap}Body --> > - Pushing element Body --> > - NSPush (32) --> > - Exit: DeserializationContext::startElement() --> > - Enter: DeserializationContext::startPrefixMapping(namesp1, lsui) --> > - NSPush (32) --> > - NSPush (32) --> > - Exit: DeserializationContext::startPrefixMapping() --> > - Enter: DeserializationContext::startElement(lsui, sayHelloResponse) --> > - Enter: BodyBuilder::onStartChild() --> > - org.apache.axis.i18n.resource::handleGetObject(newElem00) --> > - New MessageElement ([EMAIL PROTECTED]) named --> > {namesp1}sayHelloResponse --> > - Exit: BodyBuilder::onStartChild() --> > - org.apache.axis.i18n.resource::handleGetObject(pushHandler00) --> > - Pushing handler [EMAIL PROTECTED] --> > - Pushing element sayHelloResponse --> > - Exit: DeserializationContext::startElement() --> > - Enter: DeserializationContext::startElement(, s-gensym3) --> > - org.apache.axis.i18n.resource::handleGetObject(pushHandler00) --> > - Pushing handler [EMAIL PROTECTED] --> > - org.apache.axis.i18n.resource::handleGetObject(newElem00) --> > - New MessageElement --> ([EMAIL PROTECTED]) named --> > {}s-gensym3 --> > - xsi:type = 'xsd:string' --> > - Pushing element s-gensym3 --> > - NSPush (32) --> > - Exit: DeserializationContext::startElement() --> > - Enter: DeserializationContext::endElement(, s-gensym3) --> > - org.apache.axis.i18n.resource::handleGetObject(popHandler00) --> > - Popping handler [EMAIL PROTECTED] --> > - NSPop (32) --> > - Popped element stack to --> > org.apache.axis.message.RPCElement:sayHelloResponse --> > - Exit: DeserializationContext::endElement() --> > - Enter: DeserializationContext::startElement(, s-gensym5) --> > - org.apache.axis.i18n.resource::handleGetObject(pushHandler00) --> > - Pushing handler [EMAIL PROTECTED] --> > - org.apache.axis.i18n.resource::handleGetObject(newElem00) --> > - New MessageElement --> ([EMAIL PROTECTED]) named --> > {}s-gensym5 --> > - xsi:type = 'xsd:string' --> > - Pushing element s-gensym5 --> > - NSPush (32) --> > - Exit: DeserializationContext::startElement() --> > - Enter: DeserializationContext::endElement(, s-gensym5) --> > - org.apache.axis.i18n.resource::handleGetObject(popHandler00) --> > - Popping handler [EMAIL PROTECTED] --> > - NSPop (32) --> > - Popped element stack to --> > org.apache.axis.message.RPCElement:sayHelloResponse --> > - Exit: DeserializationContext::endElement() --> > - Enter: DeserializationContext::endElement(lsui, sayHelloResponse) --> > - org.apache.axis.i18n.resource::handleGetObject(popHandler00) --> > - Popping handler [EMAIL PROTECTED] --> > - NSPop (32) --> > - Popped element stack to org.apache.axis.message.SOAPBody:Body --> > - Exit: DeserializationContext::endElement() --> > - Enter: DeserializationContext::endPrefixMapping(namesp1) --> > - Exit: DeserializationContext::endPrefixMapping() --> > - Enter: --> > --> DeserializationContext::endElement(http://schemas.xmlsoap.org/so --> ap/envelope/ --> > , Body) --> > - org.apache.axis.i18n.resource::handleGetObject(popHandler00) --> > - Popping handler [EMAIL PROTECTED] --> > - NSPop (32) --> > - Popped element stack to --> org.apache.axis.message.SOAPEnvelope:Envelope --> > - Exit: DeserializationContext::endElement() --> > - Enter: --> > --> DeserializationContext::endElement(http://schemas.xmlsoap.org/so --> ap/envelope/ --> > , Envelope) --> > - org.apache.axis.i18n.resource::handleGetObject(popHandler00) --> > - Popping handler [EMAIL PROTECTED] --> > - org.apache.axis.i18n.resource::handleGetObject(empty00) --> > - NSPop (empty) --> > - Popped element stack to null --> > - Exit: DeserializationContext::endElement() --> > - Enter: DeserializationContext::endPrefixMapping(xsi) --> > - Exit: DeserializationContext::endPrefixMapping() --> > - Enter: DeserializationContext::endPrefixMapping(soapenc) --> > - Exit: DeserializationContext::endPrefixMapping() --> > - Enter: DeserializationContext::endPrefixMapping(xsd) --> > - Exit: DeserializationContext::endPrefixMapping() --> > - Enter: DeserializationContext::endPrefixMapping(soap) --> > - Exit: DeserializationContext::endPrefixMapping() --> > - Enter: DeserializationContext::endDocument() --> > - Exit: DeserializationContext::endDocument() --> > - org.apache.axis.i18n.resource::handleGetObject(setMsgForm) --> > - Setting current message form to: FORM_SOAPENVELOPE --> (currentMessage is now --> > org.apache.axis.message.SOAPEnvelope) --> > - Exit: SOAPPart::getAsSOAPEnvelope --> > - org.apache.axis.i18n.resource::handleGetObject(register00) --> > - register 'xsi' - 'http://www.w3.org/2001/XMLSchema-instance' --> > - NSPush (32) --> > - NSPush (32) --> > - org.apache.axis.i18n.resource::handleGetObject(register00) --> > - register 'soapenc' - 'http://schemas.xmlsoap.org/soap/encoding/' --> > - NSPush (32) --> > - org.apache.axis.i18n.resource::handleGetObject(register00) --> > - register 'xsd' - 'http://www.w3.org/2001/XMLSchema' --> > - NSPush (32) --> > - org.apache.axis.i18n.resource::handleGetObject(register00) --> > - register 'soap' - 'http://schemas.xmlsoap.org/soap/envelope/' --> > - NSPush (32) --> > - SAXOutputter.startElement --> ['http://schemas.xmlsoap.org/soap/envelope/' --> > Envelope] --> > - org.apache.axis.i18n.resource::handleGetObject(startElem00) --> > - Start element [http://schemas.xmlsoap.org/soap/envelope/]:Envelope --> > - SAXOutputter.startElement --> ['http://schemas.xmlsoap.org/soap/envelope/' --> > Body] --> > - org.apache.axis.i18n.resource::handleGetObject(startElem00) --> > - Start element [http://schemas.xmlsoap.org/soap/envelope/]:Body --> > - NSPush (32) --> > - org.apache.axis.i18n.resource::handleGetObject(register00) --> > - register 'namesp1' - 'lsui' --> > - NSPush (32) --> > - NSPush (32) --> > - SAXOutputter.startElement ['lsui' sayHelloResponse] --> > - org.apache.axis.i18n.resource::handleGetObject(startElem00) --> > - Start element [lsui]:sayHelloResponse --> > - SAXOutputter.startElement ['' s-gensym3] --> > - org.apache.axis.i18n.resource::handleGetObject(startElem00) --> > - Start element []:s-gensym3 --> > - NSPush (32) --> > - SAXOutputter.characters ['Hello test'] --> > - SAXOutputter.endElement ['' s-gensym3] --> > - org.apache.axis.i18n.resource::handleGetObject(endElem00) --> > - End element s-gensym3 --> > - NSPop (32) --> > - SAXOutputter.startElement ['' s-gensym5] --> > - org.apache.axis.i18n.resource::handleGetObject(startElem00) --> > - Start element []:s-gensym5 --> > - NSPush (32) --> > - SAXOutputter.characters ['second string'] --> > - SAXOutputter.endElement ['' s-gensym5] --> > - org.apache.axis.i18n.resource::handleGetObject(endElem00) --> > - End element s-gensym5 --> > - NSPop (32) --> > - SAXOutputter.endElement ['lsui' sayHelloResponse] --> > - org.apache.axis.i18n.resource::handleGetObject(endElem00) --> > - End element namesp1:sayHelloResponse --> > - NSPop (32) --> > - SAXOutputter.endElement --> ['http://schemas.xmlsoap.org/soap/envelope/' Body] --> > - org.apache.axis.i18n.resource::handleGetObject(endElem00) --> > - End element soap:Body --> > - NSPop (32) --> > - SAXOutputter.endElement ['http://schemas.xmlsoap.org/soap/envelope/' --> > Envelope] --> > - org.apache.axis.i18n.resource::handleGetObject(endElem00) --> > - End element soap:Envelope --> > - org.apache.axis.i18n.resource::handleGetObject(empty00) --> > - NSPop (empty) --> > - SAXOutputter.endDocument --> > - <?xml version="1.0" encoding="UTF-8"?><soap:Envelope --> > soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" --> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml --> > ns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" --> > xmlns:xsd="http://www.w3.org/2001/XMLSchema" --> > --> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Bod --> y><namesp1: --> > sayHelloResponse xmlns:namesp1="lsui"><s-gensym3 --> xsi:type="xsd:string">Hello --> > test</s-gensym3><s-gensym5 xsi:type="xsd:string">second --> > string</s-gensym5></namesp1:sayHelloRespon --> > se></soap:Body></soap:Envelope> --> > - org.apache.axis.i18n.resource::handleGetObject(exit00) --> > - Exit: HTTPDispatchHandler::invoke --> > - Exit: SimpleChain::invoke --> > - org.apache.axis.i18n.resource::handleGetObject(semanticCheck00) --> > - Doing SOAP semantic checks... --> > - Enter: SOAPPart::getAsSOAPEnvelope() --> > - org.apache.axis.i18n.resource::handleGetObject(currForm) --> > - current form is FORM_SOAPENVELOPE --> > - Exit: AxisClient::invoke --> > - Enter: SOAPPart::getAsSOAPEnvelope() --> > - org.apache.axis.i18n.resource::handleGetObject(currForm) --> > - current form is FORM_SOAPENVELOPE --> > - Exit: Call::invoke() --> > - Enter: SOAPPart::getAsSOAPEnvelope() --> > - org.apache.axis.i18n.resource::handleGetObject(currForm) --> > - current form is FORM_SOAPENVELOPE --> > - org.apache.axis.i18n.resource::handleGetObject(pushHandler00) --> > - Pushing handler [EMAIL PROTECTED] --> > - Enter: DeserializationContext::startPrefixMapping(namesp1, lsui) --> > - NSPush (32) --> > - NSPush (32) --> > - Exit: DeserializationContext::startPrefixMapping() --> > - Enter: DeserializationContext::startElement(lsui, sayHelloResponse) --> > - org.apache.axis.i18n.resource::handleGetObject(pushHandler00) --> > - Pushing handler [EMAIL PROTECTED] --> > - Exit: DeserializationContext::startElement() --> > - Enter: DeserializationContext::startElement(, s-gensym3) --> > - Enter: RPCHandler.onStartChild() --> > - org.apache.axis.i18n.resource::handleGetObject(typeFromAttr00) --> > - Type from attributes is: {http://www.w3.org/2001/XMLSchema}string --> > - Exit: RPCHandler.onStartChild() --> > - org.apache.axis.i18n.resource::handleGetObject(pushHandler00) --> > - Pushing handler --> [EMAIL PROTECTED] --> > - NSPush (32) --> > - Exit: DeserializationContext::startElement() --> > - Enter: DeserializationContext::endElement(, s-gensym3) --> > - org.apache.axis.i18n.resource::handleGetObject(popHandler00) --> > - Popping handler --> [EMAIL PROTECTED] --> > - org.apache.axis.i18n.resource::handleGetObject(setValueInTarget00) --> > - Set value Hello test in target --> > [EMAIL PROTECTED] --> > - NSPop (32) --> > - Popped element stack to --> > org.apache.axis.message.RPCElement:sayHelloResponse --> > - Exit: DeserializationContext::endElement() --> > - Enter: DeserializationContext::startElement(, s-gensym5) --> > - Enter: RPCHandler.onStartChild() --> > - org.apache.axis.i18n.resource::handleGetObject(typeFromAttr00) --> > - Type from attributes is: {http://www.w3.org/2001/XMLSchema}string --> > - Exit: RPCHandler.onStartChild() --> > - org.apache.axis.i18n.resource::handleGetObject(pushHandler00) --> > - Pushing handler --> [EMAIL PROTECTED] --> > - NSPush (32) --> > - Exit: DeserializationContext::startElement() --> > - Enter: DeserializationContext::endElement(, s-gensym5) --> > - org.apache.axis.i18n.resource::handleGetObject(popHandler00) --> > - Popping handler --> [EMAIL PROTECTED] --> > - org.apache.axis.i18n.resource::handleGetObject(setValueInTarget00) --> > - Set value second string in target --> > [EMAIL PROTECTED] --> > - NSPop (32) --> > - Popped element stack to --> > org.apache.axis.message.RPCElement:sayHelloResponse --> > - Exit: DeserializationContext::endElement() --> > - Enter: DeserializationContext::endElement(lsui, sayHelloResponse) --> > - org.apache.axis.i18n.resource::handleGetObject(popHandler00) --> > - Popping handler [EMAIL PROTECTED] --> > - org.apache.axis.i18n.resource::handleGetObject(setProp00) --> > - Setting MessageContext property in RPCHandler.endElement(). --> > - org.apache.axis.i18n.resource::handleGetObject(empty00) --> > - NSPop (empty) --> > - Popped element stack to org.apache.axis.message.SOAPBody:Body --> > - Exit: DeserializationContext::endElement() --> > - Exit: Call::invoke(RPCElement) --> > - Exit: Call::invoke(ns, meth, args) --> > - axis.Call.invoke: 567 {lsui}sayHello --> > =------------------------------------------------ --> > --> > --> -----Original Message----- --> > --> From: Anne Thomas Manes [mailto:[EMAIL PROTECTED] --> > --> Sent: Friday, April 08, 2005 4:15 PM --> > --> To: axis-user@ws.apache.org --> > --> Subject: Re: SOAP::Lite interoperability question --> > --> --> > --> --> > --> What does the WSDL say? --> > --> --> > --> The SOAP message appears to return two strings (s-gensym3 and --> > --> s-gensym5). Axis shouldn't have a problem with that. I --> assume the WSDL --> > --> message is defined like this: --> > --> --> > --> <wsdl:message name="sayHelloResponse> --> > --> <wsdl:part name="s-gensym3" type="xsd:string"/> --> > --> <wsdl:part name="s-gensym5" type="xsd:string"/> --> > --> </wsdl:message> --> > --> --> > --> If it isn't then modify the WSDL so that it does represent the --> > --> expected message format. --> > --> --> > --> Anne --> > --> --> > --> On Apr 8, 2005 3:55 PM, Maxim Grigoriev <[EMAIL PROTECTED]> wrote: --> > --> > Hello, --> > --> > I am having a problem with getting Axis client to communicate --> > --> with SOAP::Lite --> > --> > server. The WSDL describes very simple service and --> > --> corresponding method, it accepts one arg and returns two --> > --> > strings. The Axis client built by utilizing WSDL2Java tool --> > --> doesnt see the values , returned by --> > --> > the invocation, becasue SOAP::Lite wraps every returned --> > --> string into some generic elements ( which is actualy complaint --> > --> to SOAP standart) --> > --> > --> > --> > <?xml version="1.0" encoding="UTF-8"?><soap:Envelope --> > --> soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" --> > --> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml --> > --> > ns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" --> > --> xmlns:xsd="http://www.w3.org/2001/XMLSchema" --> > --> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Bod --> > --> y><namesp1: --> > --> > sayHelloResponse xmlns:namesp1="lsui"><s-gensym3 --> > --> xsi:type="xsd:string">Hello test</s-gensym3><s-gensym5 --> > --> xsi:type="xsd:string">second --> string</s-gensym5></namesp1:sayHelloRespon --> > --> > se></soap:Body></soap:Envelope> --> > --> > --> > --> > So, the Axis client gets nulls instead of strings. Please --> > --> help me to solve this problem. One note though, I dont like an --> > --> idea of building own deserealizer becasue --> > --> > the whole design built around concept of having one WSDL for --> > --> the whole service description ( so it used to built clients in --> > --> any other language - python, perl, java) --> > --> > Thanks, --> > --> > Maxim Grigoriev. --> > --> > --------------------------------------------------- --> > --> > :::: FERMILAB CD/CCF/NET/DCN --> > --> > --> > --> > --> > --> --> > --> > -->