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/

Reply via email to