Hi Anne,

It worked, and thanks for correcting.

Is what you said in your email about the
document/literal a standard spec?  Does it mean that
it is "unsafe" to use multipart message element (at
least for the input message)?  Why would other
web-service containers would not complain about it?  I
guess, Axis WSDL-to-Java generator should raise a
warning if it encounters a mutlipart message element. 
Would you agree?

Thanks.
Kartik

--- Anne Thomas Manes <[EMAIL PROTECTED]> wrote:
> Kartik,
> 
> The problem is in your WSDL message definition. When
> using 
> document/literal, your message definition should
> contain only one body 
> part. (You can define additional parts, but they
> should represent header 
> blocks -- not separate parameters in your body.)
> Axis ignores the second part.
> 
> You need to define a wrapper element for your input
> message. If you give 
> that wrapper element the same name as the operation
> name, you're using the 
> "wrapped" programming convention, and it will
> automatically marshal your 
> parameters for you.:
> 
>            <types>
>                  <schema
> targetNamespace="http://ka.apache.org/types";
>                         
> xmlns="http://www.w3.org/2001/XMLSchema";
>                         
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
> 
>                          <element name="foo"
> type="xsd:string" />
>                          <element name="bar"
> type="xsd:string" />
>                          <element name="wow"
> type="xsd:string" />
>                                    <element
> name="testTwo">
>                                        <complexType>
>                                           
> <sequence>
>                                               
> <element ref="xsd1:foo"/>
>                                               
> <element ref="xsd1:bar"/>
>                                            
> </sequence>
>                                       
> </complexType>
>                                   </element>
>                  </schema>
>          </types>
> 
>          <message name="testTwoIn">
>                  <part name="body"
> element="xsd1:testTwo" />
>          </message>
>          <message name="testTwoOut">
>                  <part name="w" element="xsd1:wow"
> />
>          </message>
> 
> 
> At 04:24 PM 3/11/2004, Kartik wrote:
> >Hi Folks.
> >
> >I have attached the very simple WSDL
> (paramtest.wsdl)
> >that I am testing with.  I have a couple of issues
> and
> >it would be great if someone can point some
> >solutions/references.
> >
> >In my WSDL, I have a single operation as shown belo
> >(java mapping):
> >
> >String testTwo(String f, String b);
> >
> >The operation takes two Strings and returns the
> >"hello" back.
> >
> >I run a simple C#.NET client (I also tried IONA
> Artix
> >C++ clients with the same results) which creates a
> >proxy and calls:
> >
> >   ParamTestService service = new
> ParamTestService();
> >   string result = service.testTwo("abcd", "wxyz");
> >
> >When I try to invoke on the operation, I can see on
> >the Tomcat console, that only the first argument
> >("abcd") reaches the service.  The second argument
> >never reaches the service!  If I do a
> >System.out.println on f and b in my operation
> >implementation, I see "abcd" for f (first arg), but
> I
> >see 'null' for b (second arg)!
> >
> >Does anyone know of any such issues or if you can
> find
> >a problem in my WSDL, that would be too good.  But
> I
> >think my WSDL looks okay, because other WebService
> >tool-kits to build my service and tested the
> >interoperability (.NET (C#), Artix (C++), XMLBus
> >(Java)), the same WSDL can generate the servers and
> >clients fine with correct invocations on all
> >cross-combinations.  It seems that only Axis is
> having
> >some problems :(
> >
> >PS: I looked at the request SOAP message received
> by
> >Axis, and it DOES have the second argument's value
> -
> >but somewhere in reading the incoming message or
> >parsing it, it loses the second argument.
> >
> >Please try out the service - it will not take more
> >than 10 minutes ... See steps below:
> >
> >- Copy the WSDL to a temp location
> >- Generate the server side code:
> >java org.apache.axis.wsdl.WSDL2Java -s -a
> >paramtest.wsdl
> >- Provides a sample implementation of the
> >org/apache/ka/ParamTestImpl.java methods.
> >- Build and deploy the service on Tomcat.
> >- Generate client code using the local/deployed
> WSDL.
> >- Build and run the client to invoke the method
> >testTwo().
> >- See the SOAP messages and the behavior or the
> >service
> >
> >Thank you ...
> >Kartik
> >
> >__________________________________
> >Do you Yahoo!?
> >Yahoo! Search - Find what you're looking for faster
> >http://search.yahoo.com<?xml version="1.0"
> encoding="UTF-8"?>
> ><definitions name="ParamTest"
> >         targetNamespace="http://ka.apache.org/";
> >         xmlns="http://schemas.xmlsoap.org/wsdl/";
> >        
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> >        
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
> >         xmlns:tns="http://ka.apache.org/";
> >         xmlns:xsd1="http://ka.apache.org/types";>
> >         <types>
> >                 <schema
> targetNamespace="http://ka.apache.org/types";
> >                        
> xmlns="http://www.w3.org/2001/XMLSchema";
> >                        
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
> >
> >                         <element name="foo"
> type="xsd:string" />
> >                         <element name="bar"
> type="xsd:string" />
> >                         <element name="wow"
> type="xsd:string" />
> >                 </schema>
> >         </types>
> >
> >         <message name="testTwoIn">
> >                 <part name="f" element="xsd1:foo"
> />
> >                 <part name="b" element="xsd1:bar"
> />
> >         </message>
> >         <message name="testTwoOut">
> >                 <part name="w" element="xsd1:wow"
> />
> >         </message>
> >
> >         <portType name="ParamTestInterface">
> >                 <operation name="testTwo">
> >                         <input
> message="tns:testTwoIn" name="testTwoIn" />
> >                         <output
> message="tns:testTwoOut" name="testTwoOut" />
> >                 </operation>
> >         </portType>
> >
> >         <binding name="ParamTest"
> type="tns:ParamTestInterface">
> >                 <soap:binding style="document" 
> > transport="http://schemas.xmlsoap.org/soap/http"/>
> >
> >                 <operation name="testTwo">
> >                         <soap:operation
> soapAction="" style="document" />
> >                         <input
> message="tns:testTwoIn" name="testTwoIn">
> >                                 <soap:body
> use="literal"/>
> >                         </input>
> >                         <output
> message="tns:testTwoOut" 
=== message truncated ===


__________________________________
Do you Yahoo!?
Yahoo! Finance Tax Center - File online. File on time.
http://taxes.yahoo.com/filing.html

Reply via email to