You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by "Neil P. Tomlinson" <ne...@edp.fastfreenet.com> on 2004/11/17 17:53:01 UTC

document literal and complex types

Hi am new'ish to axis, I have been using it without much configuring up 
until now.

I have a nice class which i want to use as a front to a webservice.  I also 
have some classes  which I like to pass to and from this service

We have been using straight RPC style service which needs very little 
configuring but now we have a problem when passing null parameters and so 
have decided to change to a document literal style service.  I have used 
java2wsdl to create the correct wsdl for me. My problem is the next step.

Wsdl2java has created a service class which it wants me to fill in the 
implementations for... fine well i'll just change the .wsdd created by the 
tool to point at my ready rolled implementation class, ahh but there is also 
the class which i pass to and from the service which wsdl2java has made a 
mirror of and stuck some information in (such as TypeDef stuff)..  Fine i'll 
just drag this extra info into my implementation.  This works, but seems 
like a very delicate way of doing things.

I wondered if I was just being silly and haven't found the way to put all 
this information into the .wsdd yet, perhaps in the type mapping element??

I'll expose my wsdl if it helps.

 Thanks Neil
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://edp.com" 
xmlns:apachesoap="http://xml.apache.org/xml-soap" 
xmlns:impl="http://edp.com" xmlns:intf="http://edp.com" 
xmlns:tns1="urn:TestService" 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.2RC1
Built on Sep 29, 2004 (08:29:40 EDT)-->
 <wsdl:types>
  <schema elementFormDefault="qualified" targetNamespace="http://edp.com" 
xmlns="http://www.w3.org/2001/XMLSchema">
   <import namespace="urn:TestService"/>
   <element name="getStrings">
    <complexType>
     <sequence>
      <element name="in0" type="xsd:string"/>
      <element name="in1" type="xsd:string"/>
      <element name="in2" type="xsd:string"/>
      <element name="in3" type="xsd:string"/>
      <element name="in4" type="xsd:string"/>
     </sequence>
    </complexType>
   </element>
   <element name="getStringsResponse">
    <complexType>
     <sequence>
      <element name="getStringsReturn" type="xsd:string"/>
     </sequence>
    </complexType>
   </element>
   <element name="getStringWrappers">
    <complexType>
     <sequence>
      <element name="in0" type="tns1:StringWrapper"/>
      <element name="in1" type="tns1:StringWrapper"/>
      <element name="in2" type="tns1:StringWrapper"/>
      <element name="in3" type="tns1:StringWrapper"/>
      <element name="in4" type="tns1:StringWrapper"/>
     </sequence>
    </complexType>
   </element>
   <element name="getStringWrappersResponse">
    <complexType>
     <sequence>
      <element name="getStringWrappersReturn" type="tns1:StringWrapper"/>
     </sequence>
    </complexType>
   </element>
  </schema>
  <schema elementFormDefault="qualified" targetNamespace="urn:TestService" 
xmlns="http://www.w3.org/2001/XMLSchema">
   <complexType name="StringWrapper">
    <sequence>
     <element name="string" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
  </schema>
 </wsdl:types>

   <wsdl:message name="getStringsResponse">

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

   </wsdl:message>

   <wsdl:message name="getStringsRequest">

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

   </wsdl:message>

   <wsdl:message name="getStringWrappersRequest">

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

   <wsdl:message name="getStringWrappersResponse">

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

   </wsdl:message>

   <wsdl:portType name="FiveStrings">

      <wsdl:operation name="getStrings">
         <wsdl:input message="impl:getStringsRequest" 
name="getStringsRequest"/>

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

      </wsdl:operation>

      <wsdl:operation name="getStringWrappers">

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

         <wsdl:output message="impl:getStringWrappersResponse" 
name="getStringWrappersResponse"/>
      </wsdl:operation>

   </wsdl:portType>

   <wsdl:binding name="FiveStringsSoapBinding" type="impl:FiveStrings">

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

      <wsdl:operation name="getStrings">

         <wsdlsoap:operation soapAction=""/>
         <wsdl:input name="getStringsRequest">

            <wsdlsoap:body use="literal"/>

         </wsdl:input>

         <wsdl:output name="getStringsResponse">

            <wsdlsoap:body use="literal"/>

         </wsdl:output>
      </wsdl:operation>

      <wsdl:operation name="getStringWrappers">

         <wsdlsoap:operation soapAction=""/>

         <wsdl:input name="getStringWrappersRequest">

            <wsdlsoap:body use="literal"/>

         </wsdl:input>
         <wsdl:output name="getStringWrappersResponse">

            <wsdlsoap:body use="literal"/>

         </wsdl:output>

      </wsdl:operation>

   </wsdl:binding>

   <wsdl:service name="FiveStringsService">
      <wsdl:port binding="impl:FiveStringsSoapBinding" name="FiveStrings">

         <wsdlsoap:address 
location="http://localhost:8080/my_services/services/FiveStrings"/>

      </wsdl:port>

   </wsdl:service>

</wsdl:definitions>