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 NITESH GUPTA <ni...@epfl.ch> on 2004/06/01 12:14:45 UTC
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>
RE: java.io.IOException: Emitter failure. There is an undefined binding (HelloServerBinding) in the WSDL document.
Posted by Anne Thomas Manes <an...@manes.net>.
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:nitesh.gupta@epfl.ch]
Sent: Tuesday, June 01, 2004 6:15 AM
To: axis-user@ws.apache.org
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>