Hi,

I am trying to use xfire to expose some beans as web services. Although it works fine with my own client, I must also insure that the service will be usable for client created with the jaxws RI. This means that the generated wsdl have to be imported by Sun wsimport utility. Unfortunately, this utility reports warnings because :

1) the namespace for the object is not bound. typically, a class called Contact will correspond to an element ns1:Contact, but the namespace ns1 is not bound in the wsdl schema. (ns1 is bounded in the wsdl declaration but not in the types schema)

2) the objects generated for exception are in another namespace (tns) that is not bound.

3) the objects used for lists, such as ArrayOfContact, are not declared anywhere.

So the wsdl is invalid.

Is there a way to insure that a valid wsdl will be generated ?

Thanks for any help

Pierre-Yves

the wsdl generated :

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://service.addbook.springapp.volgadev.com";
                 xmlns:tns="http://service.addbook.springapp.volgadev.com";
                 xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
                 xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
xmlns:ns1="http://domain.addbook.springapp.volgadev.com"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/";
                 xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding";
                 xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
                 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
 <wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"; attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://domain.addbook.springapp.volgadev.com";>
     <xsd:complexType name="Contact">
       <xsd:sequence>
<xsd:element minOccurs="0" name="address" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="city" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="emailAddress" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="firstName" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="homePhone" nillable="true" type="xsd:string"/>
         <xsd:element minOccurs="0" name="id" type="xsd:long"/>
<xsd:element minOccurs="0" name="lastName" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="username" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="workPhone" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="zip" nillable="true" type="xsd:string"/>

       </xsd:sequence>
     </xsd:complexType>
     <xsd:complexType name="ArrayOfContact">
       <xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="Contact" nillable="true" type="*ns1:Contact*"/>
       </xsd:sequence>
     </xsd:complexType>
   </xsd:schema>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"; attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://service.addbook.springapp.volgadev.com";>
     <xsd:element name="deleteContact">
       <xsd:complexType>
         <xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="*ns1:Contact*"/>
         </xsd:sequence>
       </xsd:complexType>
     </xsd:element>
     <xsd:element name="deleteContactResponse">

       <xsd:complexType/>
     </xsd:element>
     <xsd:complexType name="ContactNotFoundException">
       <xsd:sequence>
<xsd:element minOccurs="0" name="contact" nillable="true" type="*ns1:Contact*"/>
       </xsd:sequence>
     </xsd:complexType>
<xsd:element name="ContactNotFoundException" type="*tns:ContactNotFoundException*"/>
     <xsd:element name="loadContacts">
       <xsd:complexType/>
     </xsd:element>
     <xsd:element name="loadContactsResponse">
       <xsd:complexType>
         <xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="*ns1:ArrayOfContact*"/>
         </xsd:sequence>
       </xsd:complexType>

     </xsd:element>
     <xsd:element name="updateContact">
       <xsd:complexType>
         <xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="*ns1:Contact*"/>
         </xsd:sequence>
       </xsd:complexType>
     </xsd:element>
     <xsd:element name="updateContactResponse">
       <xsd:complexType>
         <xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="*ns1:Contact*"/>
         </xsd:sequence>
       </xsd:complexType>
     </xsd:element>
     <xsd:element name="findContact">
       <xsd:complexType>

         <xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="xsd:long"/>
         </xsd:sequence>
       </xsd:complexType>
     </xsd:element>
     <xsd:element name="findContactResponse">
       <xsd:complexType>
         <xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="*ns1:Contact*"/>
         </xsd:sequence>
       </xsd:complexType>
     </xsd:element>
     <xsd:element name="saveContact">
       <xsd:complexType>
         <xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="*ns1:Contact*"/>
         </xsd:sequence>

       </xsd:complexType>
     </xsd:element>
     <xsd:element name="saveContactResponse">
       <xsd:complexType>
         <xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="*ns1:Contact*"/>
         </xsd:sequence>
       </xsd:complexType>
     </xsd:element>
   </xsd:schema>
 </wsdl:types>
 <wsdl:message name="findContactRequest">
   <wsdl:part name="parameters" element="tns:findContact">
   </wsdl:part>

 </wsdl:message>
 <wsdl:message name="ContactNotFoundException">
<wsdl:part name="ContactNotFoundException" element="tns:ContactNotFoundException">
   </wsdl:part>
 </wsdl:message>
 <wsdl:message name="deleteContactResponse">
   <wsdl:part name="parameters" element="tns:deleteContactResponse">
   </wsdl:part>
 </wsdl:message>

 <wsdl:message name="deleteContactRequest">
   <wsdl:part name="parameters" element="tns:deleteContact">
   </wsdl:part>
 </wsdl:message>
 <wsdl:message name="updateContactResponse">
   <wsdl:part name="parameters" element="tns:updateContactResponse">
   </wsdl:part>
 </wsdl:message>
 <wsdl:message name="loadContactsResponse">

   <wsdl:part name="parameters" element="tns:loadContactsResponse">
   </wsdl:part>
 </wsdl:message>
 <wsdl:message name="saveContactResponse">
   <wsdl:part name="parameters" element="tns:saveContactResponse">
   </wsdl:part>
 </wsdl:message>
 <wsdl:message name="loadContactsRequest">
   <wsdl:part name="parameters" element="tns:loadContacts">

   </wsdl:part>
 </wsdl:message>
 <wsdl:message name="saveContactRequest">
   <wsdl:part name="parameters" element="tns:saveContact">
   </wsdl:part>
 </wsdl:message>
 <wsdl:message name="updateContactRequest">
   <wsdl:part name="parameters" element="tns:updateContact">
   </wsdl:part>

 </wsdl:message>
 <wsdl:message name="findContactResponse">
   <wsdl:part name="parameters" element="tns:findContactResponse">
   </wsdl:part>
 </wsdl:message>
 <wsdl:portType name="ContactServicePortType">
   <wsdl:operation name="deleteContact">
<wsdl:input name="deleteContactRequest" message="tns:deleteContactRequest">
     </wsdl:input>

<wsdl:output name="deleteContactResponse" message="tns:deleteContactResponse">
     </wsdl:output>
<wsdl:fault name="ContactNotFoundException" message="tns:ContactNotFoundException">
     </wsdl:fault>
   </wsdl:operation>
   <wsdl:operation name="loadContacts">
<wsdl:input name="loadContactsRequest" message="tns:loadContactsRequest">
     </wsdl:input>
<wsdl:output name="loadContactsResponse" message="tns:loadContactsResponse">

     </wsdl:output>
   </wsdl:operation>
   <wsdl:operation name="updateContact">
<wsdl:input name="updateContactRequest" message="tns:updateContactRequest">
     </wsdl:input>
<wsdl:output name="updateContactResponse" message="tns:updateContactResponse">
     </wsdl:output>
<wsdl:fault name="ContactNotFoundException" message="tns:ContactNotFoundException">
     </wsdl:fault>

   </wsdl:operation>
   <wsdl:operation name="findContact">
<wsdl:input name="findContactRequest" message="tns:findContactRequest">
     </wsdl:input>
<wsdl:output name="findContactResponse" message="tns:findContactResponse">
     </wsdl:output>
<wsdl:fault name="ContactNotFoundException" message="tns:ContactNotFoundException">
     </wsdl:fault>
   </wsdl:operation>

   <wsdl:operation name="saveContact">
<wsdl:input name="saveContactRequest" message="tns:saveContactRequest">
     </wsdl:input>
<wsdl:output name="saveContactResponse" message="tns:saveContactResponse">
     </wsdl:output>
   </wsdl:operation>
 </wsdl:portType>
<wsdl:binding name="ContactServiceHttpBinding" type="tns:ContactServicePortType"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

   <wsdl:operation name="deleteContact">
     <wsdlsoap:operation soapAction=""/>
     <wsdl:input name="deleteContactRequest">
       <wsdlsoap:body use="literal"/>
     </wsdl:input>
     <wsdl:output name="deleteContactResponse">
       <wsdlsoap:body use="literal"/>
     </wsdl:output>
     <wsdl:fault name="ContactNotFoundException">

       <wsdlsoap:fault name="ContactNotFoundException" use="literal"/>
     </wsdl:fault>
   </wsdl:operation>
   <wsdl:operation name="loadContacts">
     <wsdlsoap:operation soapAction=""/>
     <wsdl:input name="loadContactsRequest">
       <wsdlsoap:body use="literal"/>
     </wsdl:input>
     <wsdl:output name="loadContactsResponse">

       <wsdlsoap:body use="literal"/>
     </wsdl:output>
   </wsdl:operation>
   <wsdl:operation name="updateContact">
     <wsdlsoap:operation soapAction=""/>
     <wsdl:input name="updateContactRequest">
       <wsdlsoap:body use="literal"/>
     </wsdl:input>
     <wsdl:output name="updateContactResponse">

       <wsdlsoap:body use="literal"/>
     </wsdl:output>
     <wsdl:fault name="ContactNotFoundException">
       <wsdlsoap:fault name="ContactNotFoundException" use="literal"/>
     </wsdl:fault>
   </wsdl:operation>
   <wsdl:operation name="findContact">
     <wsdlsoap:operation soapAction=""/>
     <wsdl:input name="findContactRequest">

       <wsdlsoap:body use="literal"/>
     </wsdl:input>
     <wsdl:output name="findContactResponse">
       <wsdlsoap:body use="literal"/>
     </wsdl:output>
     <wsdl:fault name="ContactNotFoundException">
       <wsdlsoap:fault name="ContactNotFoundException" use="literal"/>
     </wsdl:fault>
   </wsdl:operation>

   <wsdl:operation name="saveContact">
     <wsdlsoap:operation soapAction=""/>
     <wsdl:input name="saveContactRequest">
       <wsdlsoap:body use="literal"/>
     </wsdl:input>
     <wsdl:output name="saveContactResponse">
       <wsdlsoap:body use="literal"/>
     </wsdl:output>
   </wsdl:operation>

 </wsdl:binding>
 <wsdl:service name="ContactService">
<wsdl:port name="ContactServiceHttpPort" binding="tns:ContactServiceHttpBinding"> <wsdlsoap:address location="http://localhost:8081/addbook/xfire/ContactWS"/>
   </wsdl:port>
 </wsdl:service>
</wsdl:definitions>

Reply via email to