I'm not sure that I understand your error, but I did notice that you haven't defined a type for the "lang", "name", and "path" element definitions.

When using Document style services (which you are), you must reference an element definition in the <part> definition (which you did). When using RPC style services, you must reference a type definition instead.

The ws:filesystem/file element definition looks okay (although I suspect that you really want to use a <choice> group rather than a <sequence> structure -- or perhaps you want to define an enumeration).

Anne

At 10:16 PM 2/3/2004, you wrote:
Hi, [apologies for the length]

I have read through the docs and spec but I am still unclear on a few things. The samples all work and all is well.

I have created a wsdl file and use the ant task to generate java files, then compile and deploy -- everything works so far. I must be building the wsdl (pasted at the bottom) incorrectly and I don't know enough to see the error (any suggestions on books, websites are greatly appreciated).

In looking at the code I must be doing something wrong with the //message/part element. Am I right to think I can put an element reference there? An example of the request - GetHeadRequest (coming from a .NET client) looks like:
<?xml version="1.0" encoding="ISO-8859-1"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/";>
<env:Body>
<wd:head xmlns:wd="http://xstandard.com/2002/webdir";>
<wd:lang>en</wd:lang>
</wd:head>
</env:Body>
</env:Envelope>


and the response - GetHeadResponse looks like:
<?xml version="1.0" encoding="UTF-16"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/";>
  <env:Body>
    <wd:filesystem xmlns:wd="http://xstandard.com/2002/webdir";>
      <wd:parent></wd:parent>
      <wd:name>Library Of Images &amp; Attachments</wd:name>
      <wd:description></wd:description>
    </wd:filesystem>
  </env:Body>
</env:Envelope>

I go the AxisServlet and list available service -- the new service is there. But when I hit the wsdl to see a 'roundtrip' of the schema I get the following error:

AXIS error

Sorry, something seems to have gone wrong... here are the details:



Fault - makeTypeElement() was told to create a type "{http://xstandard.com/2002/webdir}>filesystem>file", with no containing element

AxisFault

faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException

faultSubcode:

faultString: makeTypeElement() was told to create a type "{http://xstandard.com/2002/webdir}>filesystem>file", with no containing element

faultActor:

faultNode:

faultDetail:



-------------------------

The wsdl is:





<?xml version="1.0" encoding="utf-8"?>

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"; xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:wd="http://xstandard.com/2002/webdir"; xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"; xmlns:y="http://new.webservice.namespace"; targetNamespace="http://xstandard.com/2002/webdir"; name="WebDir">

<types>

<xs:schema targetNamespace="http://xstandard.com/2002/webdir";>

<!--

-->

<xs:element name="filesystem">

<xs:complexType>

<xs:sequence>

<xs:element name="parent"/>

<xs:element ref="wd:name"/>

<xs:element name="description"/>

<xs:element name="folder" minOccurs="0" maxOccurs="unbounded">

<xs:complexType>

<xs:sequence>

<xs:element ref="wd:name"/>

<xs:element ref="wd:path"/>

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:element name="file" minOccurs="0" maxOccurs="unbounded">

<xs:complexType>

<xs:sequence>

<xs:element name="gif" type="wd:ImageFile"/>

<xs:element name="jpg" type="wd:ImageFile"/>

<xs:element name="png" type="wd:ImageFile"/>

<xs:element name="bmp" type="wd:ImageFile"/>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:sequence>

</xs:complexType>

</xs:element>

<!--

-->

<xs:element name="name"/>

<xs:element name="path"/>

<xs:element name="lang"/>

<!--

-->



<xs:complexType name="GenericFile">

<xs:sequence>

<xs:element ref="wd:name"/>

<xs:element name="title"/>

<xs:element ref="wd:path"/>

<xs:element name="dlm"/>

</xs:sequence>

</xs:complexType>

<!--

-->

<xs:complexType name="ImageFile">

<xs:complexContent>

<xs:extension base="wd:GenericFile">

<xs:sequence>

<xs:element name="width"/>

<xs:element name="height"/>

<xs:element name="alt"/>

<xs:element name="longdesc"/>

<xs:element name="decorative"/>

</xs:sequence>

</xs:extension>

</xs:complexContent>

</xs:complexType>

<!--

-->

<xs:element name="head" type="wd:SoapRequest"/>

<!--

-->

<xs:element name="dir" type="wd:SoapRequest"/>

<!--

-->

<xs:complexType name="SoapRequest">

<xs:sequence>

<xs:element ref="wd:lang"/>

</xs:sequence>

</xs:complexType>

</xs:schema>

</types>

<!--



-->

<message name="GetHeadRequest">

<part name="body" element="wd:head"/>

</message>

<message name="GetHeadResponse">

<part name="body" element="wd:filesystem"/>

</message>

<!--

-->

<message name="GetDirRequest">

<part name="body" element="wd:dir"/>

</message>

<message name="GetDirResponse">

<part name="body" element="wd:filesystem"/>

</message>

<!--

-->

<portType name="WebDirPortType">

<operation name="GetHead">

<input message="wd:GetHeadRequest" name="GetHeadRequest"/>

<output message="wd:GetHeadResponse" name="GetHeadResponse"/>

</operation>

<operation name="GetDir">

<input message="wd:GetDirRequest" name="GetDirRequest"/>

<output message="wd:GetDirResponse" name="GetDirResponse"/>

</operation>

</portType>

<!--

-->

<binding name="WebDirSoapBinding" type="wd:WebDirPortType">

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

<operation name="GetHead">

<soap:operation soapAction="http://localhost:8080/services/GetHead"/>

<input name="GetHeadRequest">

<soap:body use="literal"/>

</input>

<output name="GetHeadResponse">

<soap:body use="literal"/>

</output>

</operation>

<operation name="GetDir">

<soap:operation soapAction="http://localhost:8080/lsb/services/GetDir"/>

<input name="GetDirRequest">

<soap:body use="literal"/>

</input>

<output name="GetDirResponse">

<soap:body use="literal"/>

</output>

</operation>

</binding>

<service name="WebDirPortTypeService">

<documentation>A service to show file system assets.</documentation>

<port name="WebDirPortType" binding="wd:WebDirSoapBinding">

<soap:address location="http://localhost:8080/lsb/services/WebDirPortType"/>

</port>

</service>

</definitions>

~~~~~~~~~~~~~~~~~~
Anne Thomas Manes
VP & Research Director
Burton Group




Reply via email to