Nitesh,

I agree that your QNames look okay, but there are quite a few problems with
your WSDL. You've got a serious mix and match of RPC/encoded and
document/literal definitions.

I think your specific error is caused by the way you've defined your
<soap:body> elements:

<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
        namesapce="http://craft.epfl.ch/wsdl/HelloServer.wsdl";
        use="literal"/>

1) you have "namespace" spelled wrong (so perhaps wsdl2java ignored the
binding definition -- hence no binding was defined)
2) you should not use the "encodingStyle" and the "namespace" attributes on
document/literal bindings.

Your <soap:body> elements should be defined like this:

<soap:body use="literal"/>

You also have typos in some of your message names:

        <message name="sayHellToRequest">
                <part name="name" type="xsd:string"/>
        </message>

Some basic guidelines for doc/literal bindings:
- Don't use the soapenc:array type. Define your own array using the
minOccurs and maxOccurs attributes.
- You have only one message part per message. That message part must
reference an element definition rather than a type definition.
- To use the Wrapped style, the referenced element definition must have the
same name as the portType operation name. The element must be defined as a
<sequence>. The operation parameters are defined as elements within the
sequence.

For example, your addRequest message should be defined like this:

        <message name="addRequest">
                <part name="parameters" element="tns:add"/>
        </message>

And the add element should be defined like this:

        <element name="add">
        <complexType>
          <sequence>
                <element name="num1" type="xsd:int"/>
                <element name="num2" type="xsd:int"/>
          </sequence>
        </complexType>
        </element>

I suggest you get a WSDL editor to help you define your WSDL documents. The
Cape Clear SOA Editor is free. See
http://www.capescience.com/soa/index.shtml

Anne

-----Original Message-----
From: NITESH GUPTA [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, June 01, 2004 6:15 AM
To: [EMAIL PROTECTED]
Subject: java.io.IOException: Emitter failure. There is an undefined binding
(HelloServerBinding) in the WSDL document.

Hi,

I got the error  :

java.io.IOException: Emitter failure.  There is an undefined binding
(HelloServerBinding) in the WSDL document.
Hint: make sure <port binding=".."> is fully qualified.

I checked my WSDL file and everything seems ok. I'm not able to figure out
why I am getting this error.

I have included the WSDL file below.

Any help is appreciated.
Thanks in advance,
Nitesh


<?xml version="1.0" encoding="UTF-8"?>
<definitions name="HelloServer"
        targetnamespace="http://craft.epfl.ch/wsdl/HelloServer.wsdl";
        xmlns="http://schemas.xmlsoap.org/wsdl/";
        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
        xmlns:tns="http://craft.epfl.ch/wsdl/HelloServer.wsdl";
        xmlns:xsd="http://www.w3.org/2001/XMLSchema";
        xmlns:xsd1="http://craft.epfl.ch/schema";>
        
        <types>
                <xsd:schema
        
targetnamespace="http://craft.epfl.ch/wsdl/HelloServer.wsdl";
                        xmlns="http://www.w3.org/2001/XMLSchema";
                        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
        
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
                        
                        <xsd:complexType name="ArrayOfString">
                                <xsd:complexContent>
                                        <xsd:restriction
base="soapenc:Array">
                                                <xsd:attribute
ref="soapenc:arrayType" wsdl:arrayType="string[]"/>
                                        </xsd:restriction>
                                </xsd:complexContent>
                        </xsd:complexType>
                        
                        <xsd:complexType name="HelloUser">
                                <xsd:sequence>
                                        <xsd:element name="userID"
type="xsd:int"/>
                                        <xsd:element name="userName"
nillable="true" type="xsd:string"/>
                                        <xsd:element maxOccurs="unbounded"
name="userAdd" nillable="true" type="xsd:string"/>
                                </xsd:sequence>
                        </xsd:complexType>
                </xsd:schema>
        </types>
        
        <message name="addRequest">
                <part name="num1" type="xsd:int"/>
                <part name="num2" type="xsd:int"/>
        </message>
                                
        <message name="addResponse">
                <part name="result" type="xsd:int"/>
        </message>

        <message name="sayHellToRequest">
                <part name="name" type="xsd:string"/>
        </message>

        <message name="sayHellToResponse">
                <part name="reply" type="xsd:string"/>
        </message>

        <message name="sayHellTo1Request">
                <part name="names" type="xsd1:ArrayOfString"/>
        </message>
                                        
        <message name="sayHellTo1Resonse">
                <part name="reply" type="xsd:string"/>
        </message>

        <message name="testUserRequest">
                <part name="user" type="xsd1:HelloUser"/>
        </message>
        
        <message name="testUserResponse">
        </message>

        <portType name="HelloServer">
                <operation name="add" parameterOrder="num1 num2">
                        <input message="tns:addRequest" name="addRequest"/>
                        <output message="tns:addResponse"
name="addResponse"/>
                </operation>
                
                <operation name="sayHelloTo">
                        <input message="tns:sayHelloToRequest"
name="sayHelloToRequest"/>
                        <output message="tns:sayHelloToResponse"
name="sayHelloToResponse"/>
                </operation>
                
                <operation name="sayHelloTo1">
                        <input message="tns:sayHelloTo1Request"
name="sayHelloTo1Request"/>
                        <output message="tns:sayHelloTo1Response"
name="sayHelloTo1Response"/>
                </operation>
                
                <operation name="testUser">
                        <input message="tns:testUserRequest"
name="testUserRequest"/>
                        <output message="tns:testUserResponse"
name="testUserResponse"/>
                </operation>
        </portType>
        
        <binding name="HelloServerBinding" type="tns:HelloServer">
                <soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
        
                <operation name="add">
                        <soap:operation soapAction=""/>
                        <input name="addRequest">
                                <soap:body
        
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
        
namesapce="http://craft.epfl.ch/wsdl/HelloServer.wsdl";
                                        use="literal"/>
                        </input>
                        <output name="addResponse"> 
                                <soap:body
        
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
        
namesapce="http://craft.epfl.ch/wsdl/HelloServer.wsdl";
                                        use="literal"/>
                        </output>       
                </operation>
        
                <operation name="sayHelloTo">
                        <soap:operation soapAction=""/>
                        <input name="sayHelloToRequest">
                                <soap:body
        
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
        
namesapce="http://craft.epfl.ch/wsdl/HelloServer.wsdl";
                                        use="literal"/>
                        </input>
                        <output name="sayHelloToResponse"> 
                                <soap:body
        
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
        
namesapce="http://craft.epfl.ch/wsdl/HelloServer.wsdl";
                                        use="literal"/>
                        </output>       
                </operation>
        
                <operation name="sayHelloTo1">
                        <soap:operation soapAction=""/>
                        <input name="sayHelloTo1Request">
                                <soap:body
        
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
        
namesapce="http://craft.epfl.ch/wsdl/HelloServer.wsdl";
                                        use="literal"/>
                        </input>
                        <output name="sayHelloTo1Response"> 
                                <soap:body
        
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
        
namesapce="http://craft.epfl.ch/wsdl/HelloServer.wsdl";
                                        use="literal"/>
                        </output>       
                </operation>
        
                <operation name="testUser">
                        <soap:operation soapAction=""/>
                        <input name="testUserRequest">
                                <soap:body
        
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
        
namesapce="http://craft.epfl.ch/wsdl/HelloServer.wsdl";
                                        use="literal"/>
                        </input>
                        <output name="testUserResponse"> 
                                <soap:body
        
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
        
namesapce="http://craft.epfl.ch/wsdl/HelloServer.wsdl";
                                        use="literal"/>
                        </output>       
                </operation>
        
        </binding>
        
        <service name="HelloServerService">
                <port name="HelloServerPort"
binding="tns:HelloServerBinding">
                        <soap:address
location="http//:craftgepc18.epfl.ch:8080/axis/services/helloserver"/>
                </port>
        </service>
        
</definitions>

Reply via email to