I see two classes of problems with the a.wsdl file you just sent:
1- When using doc/literal, a <message> element MUST contain only one part.
All the <message> elements in this wsdl file contain multiple parts. For
example:
<wsdl:message name="getRequest">
<wsdl:part name="accountName" element="data:accountName"/>
<wsdl:part name="password" element="data:password"/>
<wsdl:part name="reportTitle" element="data:reportTitle"/>
</wsdl:message>
This is the input message for the getReport operation. It should be defined
as follows:
<wsdl:message name="getRequest">
<wsdl:part name="parameters" element="data:getReport"/>
</wsdl:message>
And in the <types> section, you need to define the getReport element, e.g.:
<xs:element name="getReport">
<xs:complexType>
<xs:sequence>
<xs:element ref="data:accountName"/>
<xs:element ref="data:password"/>
<xs:element ref="data:reportTitle"/>
</xs:sequence>
</xs:complexType>
</xs:element>
2- When using doc/literal, the <soap:body> elements in the <binding>
definition MUST NOT include the namespace attribute. All <soap:body>
definitions in the binding in this wsdl file include the namespace
attribute. For example:
<wsdl:binding name="clientDirectBinding" type="impl:clientHandler">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getReport">
<soap:operation
soapAction="http://localhost:8080/axis/services/clientHandlerServicePort"/>
<wsdl:input>
<soap:body use="literal"
namespace="http://localhost:8080/axis/services/clientHandlerServicePort"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"
namespace="http://localhost:8080/axis/services/clientHandlerServicePort"/>
</wsdl:output>
</wsdl:operation>
...
</wsdl:binding>
This binding should be defined as follows:
<wsdl:binding name="clientDirectBinding" type="impl:clientHandler">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getReport">
<soap:operation
soapAction="http://localhost:8080/axis/services/clientHandlerServicePort"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
...
</wsdl:binding>
Best regards,
Anne
-----Original Message-----
From: Davanum Srinivas [mailto:[EMAIL PROTECTED]
Sent: Friday, June 25, 2004 1:23 PM
To: [EMAIL PROTECTED]
Subject: Re: Peculiar Error; Appreciate Some Help
Here it is...
----- Original Message -----
From: [EMAIL PROTECTED] <[EMAIL PROTECTED]>
Date: Fri, 25 Jun 2004 11:20:07 EDT
Subject: Re: Peculiar Error; Appreciate Some Help
To: [EMAIL PROTECTED]
In a message dated 6/25/2004 11:18:48 AM Eastern Standard Time,
[EMAIL PROTECTED] writes:
send me
your complete wsdl.
----- Original Message -----
From:
[EMAIL PROTECTED] <[EMAIL PROTECTED]>
Date: Fri, 25 Jun 2004 11:06:54
EDT
Subject: Re: Peculiar Error; Appreciate Some Help
To:
[EMAIL PROTECTED]
In a
message dated 6/25/2004 10:51:56 AM Eastern Standard Time,
[EMAIL PROTECTED] writes:
karim
wrote:
>
[EMAIL PROTECTED] wrote:
>
>>
Hello,
>>
>> I would truly appreciate some help with
this error.
This is one of
>> those things where I believe an extra
set of eyes could easily solve.
>> I have the following WSDL
documents, and I am receiving the following
>>
error:
>>
>> java.io.IOException: Emitter
failure. There is an undefined binding
>>
(clientDire
>> ctBinding) in the WSDL document.
>> Hint:
make sure <port binding=".."> is fully
qualified.
>>
>> I am almost certain that
this is a namespace issue, as I am not a
pro
>> at XML
namespaces or WSDL, though not a beginner, I am
hopeful
>> somebody out there can easily solve this. Here are two of
my WSDL
>> documents. This should be sufficient to find
the
problem:
>>
>> <?xml version="1.0"
encoding="UTF-8"?>
>>
>>
<wsdl:definitions
>>
xmlns="http://schemas.xmlsoap.org/wsdl/"
>> xmlns:impl =
>>
"http://localhost:8080/axis/services/clientHandlerServicePort"
>>
xmlns:wsdl = "http://schemas.xmlsoap.org/wsdl/"
>>
xmlns:soap =
"http://schemas.xmlsoap.org/wsdl/soap/"
>>
xmlns:xs =
"http://www.w3.org/2001/XMLSchema"
>> xmlns:data =
>>
"http://localhost:8080/axis/service/clientHandlerServicePort"
>>
>> targetNamespace =
>>
"http://localhost:8080/axis/services/clientHandlerServicePort" name =
>> "clientDirect"
>> >
>>
>>
<wsdl:documentation>
>> !!
clientDirectService.wsdl
!!
>> !! Created by
James Crosson
!!
>>
>> !! June 23,
2004 !!
>>
</wsdl:documentation>
>>
>> <wsdl:import
namespace =
>>
"http://localhost:8080/axis/services/clientHandlerServicePort"
>>
location = "clientDirectBinding.wsdl"/>
>>
>>
<wsdl:service name =
"clientDirectService">
>>
<wsdl:port
name = "clientDirectrServicePort" binding =
>>
"impl:clientDirectBinding">
>> <soap:address
location =
>>
"http://locations:8080/axis/services/clientHandlerServicePort"/
>>
<http://locations:8080/axis/services/clientHandlerServicePort%22/>>
>>
</wsdl:port>
>>
</wsdl:service>
>>
>>
</wsdl:definitions>
>>
>
> Try again
to
change the port name because there is an extra 'r', I
> don't know
if it'll helps but why not try ;-)
> <wsdl:port name
=
"clientDirectServicePort" binding =
>
"impl:clientDirectBinding">
>
>
Besides, I've looked in all
my wsdl and I've all the time the same name
for the port and
the deployed
service.
- <#> <wsdl:service
name="*CriterionManagerWithRulesImplService*">
- <#>
<wsdl:port
name="*CriterionManager*"
binding="*impl:CriterionManagerSoapBinding*">
<wsdlsoap:address
location="*http://127.0.0.1:8080/axis/services/CriterionManager*"
/>
</wsdl:port>
</wsdl:service>
Maybe the name of your port would be
"clientHandlerServicePort"
I really hope
somebody can help me. This is asking a lot but it would be
incredible!
--
Davanum Srinivas -
http://webservices.apache.org/~dims/
Here is the Complete WSDL, I have placed it into one file for now. I will
split it into four files when I get it working:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
xmlns="http://schemas.xmlsoap.org/wsdl"
xmlns:impl="http://localhost:8080/axis/services/clientHandlerServicePort"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:data="http://localhost:8080/axis/services/clientHandlerServicePort"
targetNamespace="http://localhost:8080/axis/services/clientHandlerServicePor
t"
name="clientDirect">
<wsdl:types>
<xs:schema>
<xs:element name = "accountName" type =
"xs:string"/>
<xs:element name =
"password" type = "xs:string"/>
<xs:element name = "reportTitle" type = "xs:string"/>
<xs:element name = "conditions" type = "xs:string"/>
<xs:element name = "queryAttr" type =
"xs:string"/>
<xs:element name = "errorCode"
type = "xs:string"/>
<xs:element name = "errorString" type
= "xs:string"/>
<xs:element name = "success" type =
"xs:boolean"/>
<xs:element name = "queryList">
<xs:complexType>
<xs:element ref =
"data:queryAttr" minOccurs = "0" maxOccurs = "unbounded" type =
"xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name = "getRequest">
<wsdl:part name =
"accountName" element = "data:accountName"/>
<wsdl:part name =
"password" element = "data:password"/>
<wsdl:part name = "reportTitle" element =
"data:reportTitle"/>
</wsdl:message>
<wsdl:message name = "getResponse">
<wsdl:part name =
"reportTitle" element = "data:reportTitle"/>
<wsdl:part name =
"success" element = "data:success"/>
<wsdl:part name = "errorCode" element =
"data:errorCode"/>
<wsdl:part name = "errorString" element =
"data:errorString"/>
</wsdl:message>
<wsdl:message name = "queryRequest">
<wsdl:part name
= "accountName" element = "data:accountName"/>
<wsdl:part name =
"password" element = "data:password"/>
<wsdl:part name = "condition" element =
"data:condition"/>
</wsdl:message>
<wsdl:message name = "queryResponse">
<wsdl:part name =
"queryList" element = "data:queryList"/>
<wsdl:part
name = "success" element = "data:success"/>
<wsdl:part name = "errorCode" element =
"data:errorCode"/>
<wsdl:part name = "errorString" element =
"data:errorString"/>
</wsdl:message>
<wsdl:message name = "getQueryRequest">
<wsdl:part
name = "accountName" element = "data:accountName"/>
<wsdl:part
name = "password" element = "data:password"/>
<wsdl:part name = "queryList" element =
"data:queryList"/>
</wsdl:message>
<wsdl:message name = "getQueryResponse">
<wsdl:part name
= "queryList" element = "data:queryList"/>
<wsdl:part name = "success" element =
"data:success"/>
<wsdl:part name = "errorCode"
element = "data:errorCode"/>
<wsdl:part name = "errorString"
element = "data:errorString"/>
</wsdl:message>
<wsdl:portType name = "clientHandler">
<wsdl:operation name = "getReport">
<wsdl:input name = "getRequest" message =
"impl:getRequest"/>
<wsdl:output name =
"getResponse" message = "impl:getResponse"/>
</wsdl:operation>
<wsdl:operation name = "query">
<wsdl:input name = "query" message =
"impl:queryRequest"/>
<wsdl:output name =
"query" message = "impl:queryResponse"/>
</wsdl:operation>
<wsdl:operation name = "getQuery">
<wsdl:input name = "getQueryRequest" message =
"impl:getQueryRequest"/>
<wsdl:output name =
"getQueryResponse" message = "impl:getQueryResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name = "clientDirectBinding" type =
"impl:clientHandler">
<soap:binding style = "document" transport
= "http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name = "getReport">
<soap:operation soapAction =
"http://localhost:8080/axis/services/clientHandlerServicePort"/>
<wsdl:input>
<soap:body use = "literal" namespace =
"http://localhost:8080/axis/services/clientHandlerServicePort"/>
</wsdl:input>
<wsdl:output>
<soap:body use = "literal" namespace =
"http://localhost:8080/axis/services/clientHandlerServicePort"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name = "query">
<soap:operation soapAction =
"http://localhost:8080/axis/services/clientHandlerServicePort"/>
<wsdl:input>
<soap:body use = "literal" namespace =
"http://localhost:8080/axis/services/clientHandlerServicePort"/>
</wsdl:input>
<wsdl:output>
<soap:body use = "literal" namespace =
"http://localhost:8080/axis/services/clientHandlerServicePort"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name = "queryList">
<soap:operation soapAction =
"http://localhost:8080/axis/services/clientHandlerServicePort"/>
<wsdl:input>
<soap:body use = "literal" namespace =
"http://localhost:8080/axis/services/clientHandlerServicePort"/>
</wsdl:input>
<wsdl:output>
<soap:body use = "literal" namespace =
"http://localhost:8080/axis/services/clientHandlerServicePort"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name = "clientHandlerService">
<wsdl:port
name = "clientHandlerServicePort" binding =
"impl:clientDirectBinding">
<soap:address location =
"http://locations:8080/axis/services/clientHandlerServicePort"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
--
Davanum Srinivas - http://webservices.apache.org/~dims/