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>