Eric,
Your error is caused by an unqualified message reference in this
<input> binding definition (which appears in all three of your
operations):
<input>
<soap:header message="tns:equipment" part="body"
namespace="http://www.starviewtechnology.com/schema/2.2/collector"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
use="literal">
<soap:headerfault message="EquipmentNotRegistered" part="errorString"
namespace="http://www.starviewtechnology.com/schema/2.2/collector"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
use="literal" />
</soap:header>
<soap:body
namespace="http://www.starviewtechnology.com/schema/2.2/collector"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
use="literal" />
</input>
This line:
<soap:headerfault message="EquipmentNotRegistered" part="errorString"
should be:
<soap:headerfault message="tns:EquipmentNotRegistered" part="errorString"
But meanwhile, there are a number of errors in your WSDL:
1- When using document style, all message parts must reference
elements, not types, therefore the following message definition is
wrong:
<message name="EquipmentNotRegistered">
<part name="errorString" type="xsd:string" />
</message>
You must define an element in your schema called "errorString":
<xsd:element name="errorString" type="xsd:string/>
And you should change the message definition to this:
<message name="EquipmentNotRegistered">
<part name="errorString" element="sv:errorString" />
</message>
or better yet:
<message name="EquipmentNotRegistered">
<part name="headerfault" element="sv:errorString" />
</message>
2- when defining a document/literal soap:header, soap:headerfault, or
soap:body binding, you must specify only the use="literal" attribute.
You must not specify the namespace attribute (used only for
style="rpc") or the encodingStyle attribute (used only for
use="encoded"). All of your current bindings are wrong. For example,
this input message:
<input>
<soap:header message="tns:equipment" part="body"
namespace="http://www.starviewtechnology.com/schema/2.2/collector"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
use="literal">
<soap:headerfault message="EquipmentNotRegistered" part="errorString"
namespace="http://www.starviewtechnology.com/schema/2.2/collector"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
use="literal" />
</soap:header>
<soap:body
namespace="http://www.starviewtechnology.com/schema/2.2/collector"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
use="literal" />
</input>
Should be:
<input>
<soap:header message="tns:equipment" part="body" use="literal">
<soap:headerfault message="tns:EquipmentNotRegistered"
part="headerfault"
use="literal" />
</soap:header>
<soap:body use="literal" />
</input>
3- On a more basic level, it doesn't make sense to define a
headerfault for one-way message operations. You can only return a
fault when using the request/response message exchange pattern.
I also have to ask why you've named your header parts "body". This
won't cause an error, but it's makes it much more confusing to the
reader.
I've attached an updated WSDL. It fixes the first two problems, but it
doesn't address problem #3. To fix that, either remove the headerfault
binding definition, or define response messages.
Regards,
Anne
On 5/6/05, eogreen <[EMAIL PROTECTED]> wrote:
> Here's the WSDL obtained from service URL.
>
> Thanks,
> Eric
>
>
> --- Anne Thomas Manes <[EMAIL PROTECTED]> wrote:
> > I think you have a namespace problem in your WSDL. The tool is
> > rejecting this element:
> > http://schemas.xmlsoap.org/wsdl/}EquipmentNotRegistered
> >
> > What that says is that you defined an element in the WSDL namespace,
> > but you can't do that. I suspect one of two things. Either you set
> > your targetNamespace to be http://schemas.xmlsoap.org/wsdl/ (can't do
> > that), or you refer to wsdl:EquipmentNotRegistered.
> >
> > If you provide your WSDL, I'd be happy to take a look at it.
> >
> > Anne
> >
> > (ps -- in the future, please send this type of user question to the
> > axis-user list)
> >
> > On 5/5/05, eogreen <[EMAIL PROTECTED]> wrote:
> > > Hi,
> > >
> > > May I humbly ask for assistance..? I am trying to build my WSDLToJava
> > emitter
> > > classes for a new client proxy. I am getting the following error on the
> > > command line. I'm not sure which symbol table is being referred to in the
> > > message.
> > >
> > > <sample>
> > >
> > > C:\Documents and Settings\egreen\bench\src>java -cp
> > > org.apache.axis.wsdl.WSDL2Java RTDM-collector-wsdl.xml
> > >
> > > log4j:WARN No appenders could be found for logger
> > > (org.apache.axis.i18n.ProjectResourceBundle).
> > > log4j:WARN Please initialize the log4j system properly.
> > > java.io.IOException: No symbol table entry found for message
> > > {http://schemas.xmlsoap.org/wsdl/}EquipmentNotRegistered
> > > at
> > org.apache.axis.wsdl.symbolTable.FaultInfo.<init>(FaultInfo.java:99)
> > > at
> > >
> >
> org.apache.axis.wsdl.symbolTable.SymbolTable.fillInBindingInfo(SymbolTable.java:2568)
> > > at
> > >
> >
> org.apache.axis.wsdl.symbolTable.SymbolTable.populateBindings(SymbolTable.java:2480)
> > > at
> > > org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:735)
> > > at
> > > org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:534)
> > > at
> > > org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:509)
> > > at
> > > org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:486)
> > > at
> > org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:356)
> > > at java.lang.Thread.run(Unknown Source)
> > >
> > > Thanks in advance,
> > > Eric Green
> > >
> > > _____________
> > >
> > >
> > > __________________________________
> > > Yahoo! Mail Mobile
> > > Take Yahoo! Mail with you! Check email on your mobile phone.
> > > http://mobile.yahoo.com/learn/mail
> > >
> >
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
>
>
<?xml version="1.0"?>
<definitions name="collector" targetNamespace="http://www.starviewtechnology.com/wsdl/collector" xmlns:tns="http://www.starviewtechnology.com/wsdl/collector" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:sv="http://www.starviewtechnology.com/schema/2.2/collector" xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<xsd:schema targetNamespace="http://www.starviewtechnology.com/schema/2.2/collector" xmlns="http://www.starviewtechnology.com/schema/2.2/collector" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xsd:annotation>
<xsd:documentation xml:lang="en"> Data Collection Web Service Formats. Copyright(c) 2003 Starview Technology, Inc. All rights reserved. </xsd:documentation>
</xsd:annotation>
<!-- Top level elements -->
<xsd:element name="TraceReport" type="trace-report-type"/>
<xsd:element name="EventReport" type="event-report-type"/>
<xsd:element name="Alarm" type="alarm-type"/>
<xsd:element name="Equipment" type="xsd:NMTOKEN"/>
<!-- ATM added element definition for errorString -->
<xsd:element name="errorString" type="xsd:string"/>
<!-- Type definitions -->
<xsd:complexType name="alarm-type">
<xsd:sequence>
<xsd:element name="Code" type="xsd:byte" minOccurs="1"/>
<xsd:element name="Text" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:NMTOKEN" use="required"/>
<xsd:attribute name="ts" type="xsd:dateTime" use="required"/>
</xsd:complexType>
<xsd:complexType name="trace-report-type">
<xsd:annotation>
<xsd:documentation xml:lang="en"> Represents a single trace vector, or a batch of trace vectors. If DataList is used to represent data, an IdList or NameList must be present, or was present in a previous TraceReport element with the same id, to identify the parameter values in the DataList. IdList or NameList is omitted if a DataSet is used since the parameters are identified in the data elements of the DataSet. </xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:choice>
<xsd:sequence>
<xsd:choice>
<xsd:annotation>
<xsd:documentation xml:lang="en"> In order to use IdList, the ids must be unique across different the SECS types, i.e. there cannot be both a status and constant param with the same SECS ID. Similarly, to use NameList, param names must be unique across the whole equipment. Otherwise, use DataSet, and use the Data element's type attribute to disambiguate. </xsd:documentation>
</xsd:annotation>
<xsd:element name="IdList" type="csv-type" minOccurs="0"/>
<xsd:element name="NameList" type="csv-type" minOccurs="0"/>
</xsd:choice>
<xsd:element name="DataList" type="datalist-type" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:sequence>
<xsd:element name="DataSet" type="dataset-type" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:NMTOKEN" use="required"/>
</xsd:complexType>
<xsd:complexType name="event-report-type">
<xsd:sequence>
<xsd:element name="Event" type="event-type" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:NMTOKEN" use="optional"/>
</xsd:complexType>
<xsd:complexType name="context-type">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Context represents a group of data that provides contextual
information related to an event, for example LOT.
The fixed elements (Wafer,Slot,Lot,Recipe,RecipeStep,State)
and module attribute are deprecated and will be NOT be
supported in the next release. Use Data elements instead.
</xsd:documentation>
</xsd:annotation>
<xsd:choice>
<xsd:sequence>
<xsd:element name="Wafer" type="xsd:token" minOccurs="0"/>
<xsd:element name="Slot" type="xsd:token" minOccurs="0"/>
<xsd:element name="Lot" type="xsd:token" minOccurs="0"/>
<xsd:element name="Recipe" type="xsd:token" minOccurs="0"/>
<xsd:element name="RecipeStep" type="xsd:token" minOccurs="0"/>
<xsd:element name="State" type="xsd:token" minOccurs="0"/>
</xsd:sequence>
<xsd:sequence>
<xsd:element name="Data" type="data-type" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:choice>
<xsd:attribute name="module" type="xsd:NMTOKEN" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="csv-type">
<xsd:restriction base="xsd:token">
<xsd:pattern value="([\c]+)(,[\c]+)*"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="event-type">
<xsd:sequence>
<xsd:element name="Context" type="context-type" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="DataSet" type="dataset-nots-type" minOccurs="0"/>
</xsd:sequence>
<xsd:attributeGroup ref="identity"/>
<xsd:attribute name="ts" type="xsd:dateTime" use="required"/>
</xsd:complexType>
<xsd:complexType name="data-type">
<xsd:annotation>
<xsd:documentation xml:lang="en"> Represents a data item as identity-value pair. The identity is represented as an attribute, and the value is the content. </xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:token">
<xsd:attributeGroup ref="identity"/>
<xsd:attribute name="type" type="data-secs-type" use="optional"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="data-secs-type">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="status"/>
<xsd:enumeration value="constant"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="datalist-nots-type">
<xsd:annotation>
<xsd:documentation xml:lang="en"> Simple extension of csv-type to serve as marker for ordered collection of comma-separated data tokens. </xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="csv-type"> </xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="datalist-type">
<xsd:annotation>
<xsd:documentation xml:lang="en"> Extend datalist-nots-type by adding a ts attribute. </xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="datalist-nots-type">
<xsd:attribute name="ts" type="xsd:dateTime" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="dataset-nots-type">
<xsd:sequence>
<xsd:element name="Data" type="data-type" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="dataset-type">
<xsd:complexContent>
<xsd:extension base="dataset-nots-type">
<xsd:attribute name="ts" type="xsd:dateTime" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:attributeGroup name="identity">
<xsd:annotation>
<xsd:documentation xml:lang="en"> The semantics is that at least one of the attributes in this group must be specified; i.e. either id or name MUST be specified. Since this cannot be expressed in the current W3C XML Schema, it will be enforced in parser logic. </xsd:documentation>
</xsd:annotation>
<xsd:attribute name="id" type="xsd:NMTOKEN" use="optional"/>
<xsd:attribute name="name" type="xsd:token" use="optional"/>
</xsd:attributeGroup>
</xsd:schema>
</types>
<message name="trace">
<part name="body" element="sv:TraceReport"/>
</message>
<message name="event">
<part name="body" element="sv:EventReport"/>
</message>
<message name="alarm">
<part name="body" element="sv:Alarm"/>
</message>
<message name="equipment">
<!-- ATM changed part name from "body" to "header" -->
<part name="header" element="sv:Equipment"/>
</message>
<message name="EquipmentNotRegistered">
<!-- ATM edited part definition from this
<part name="errorString" type="xsd:string"/>
to this -->
<part name="headerfault" element="sv:errorString"/>
</message>
<portType name="CollectorPortType">
<operation name="SinkTrace">
<input message="tns:trace"/>
</operation>
<operation name="SinkEvent">
<input message="tns:event"/>
</operation>
<operation name="SinkAlarm">
<input message="tns:alarm"/>
</operation>
</portType>
<binding name="CollectorPortBinding" type="tns:CollectorPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<!-- ATM changed all <input> elements, removing namespace and encodingStyle attributes,
adding namespace prefix to message="EquipmentNotRegistered",
and changing part names to match the new names used in the <message> definitions -->
<operation name="SinkTrace">
<soap:operation soapAction=""/>
<input>
<soap:header message="tns:equipment" part="header" use="literal">
<soap:headerfault message="tns:EquipmentNotRegistered" part="headerfault" use="literal"/>
</soap:header>
<soap:body use="literal"/>
</input>
</operation>
<operation name="SinkEvent">
<soap:operation soapAction=""/>
<input>
<soap:header message="tns:equipment" part="header" use="literal">
<soap:headerfault message="tns:EquipmentNotRegistered" part="headerfault" use="literal"/>
</soap:header>
<soap:body use="literal"/>
</input>
</operation>
<operation name="SinkAlarm">
<soap:operation soapAction=""/>
<input>
<soap:header message="tns:equipment" part="header" use="literal">
<soap:headerfault message="tns:EquipmentNotRegistered" part="headerfault" use="literal"/>
</soap:header>
<soap:body use="literal"/>
</input>
</operation>
</binding>
<service name="CollectorWebService">
<documentation>Trace and Event Collector</documentation>
<port name="CollectorPort" binding="tns:CollectorPortBinding">
<soap:address location="http://auidc50:8080/starview/collector"/>
</port>
</service>
</definitions>