You are trying to do wrapped/literal mode, right?  Yeah, I think wsdl2java is producing bad output.  I think that wsdl2java is getting confused by the void return type.  Please see my earlier mail on void return types.

Dhananjayan_K wrote:
Hi,
For the follwing .wsdl file the *Impl.java class generated by wsdl2java
seems to be wrong..
Please correct me if iam wrong..

<?xml version="1.0" encoding="utf-8"?>
<definitions 
targetNamespace="urn:SimpleService"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:s="http://www.w3.org/2001/XMLSchema" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" 
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:s0="urn:SimpleService">
  <types>
       <s:schema elementFormDefault="qualified"
targetNamespace="urn:SimpleService" >                
		<s:element name="AddEntry">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="po"
type="s0:ServiceDetails" />
          </s:sequence>
        </s:complexType>
      </s:element>      
  		<s:complexType name="ServiceDetails">
		<s:sequence>
		  <s:element minOccurs="0" maxOccurs="1" name="ItemName"
type="s:string" />
		  <s:element minOccurs="1" maxOccurs="1" name="Quantity"
type="s:int" />
		  <s:element minOccurs="1" maxOccurs="1" name="price"
type="s:float" />
		  <s:element minOccurs="0" maxOccurs="1" name="currency"
type="s:string" />
		</s:sequence>
	  </s:complexType>  
          	
      <s:element name="AddEntryResponse">
        <s:complexType/>                 
      </s:element>  
      <s:element name="getOrder">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="str2"
type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>     
      <s:element name="getOrderResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="getOrderResult"
type="s:int" />
          </s:sequence>
        </s:complexType>
        </s:element>          
    </s:schema>
  </types>
  <message name="empty"/>
   <message name="AddEntrySoapIn">
    <part name="parameters" element="s0:AddEntry" />            
  </message>
  <message name="AddEntrySoapOut">
    <part name="parameters" element="s0:AddEntryResponse" />
  </message>
  <message name="getOrderSoapIn">
    <part name="parameters" element="s0:getOrder" />
  </message>
  <message name="getOrderSoapOut">
    <part name="parameters" element="s0:getOrderResponse" />
  </message>    
  <portType name="SimpleServiceRegistry">
    <operation name="addEntry">
      <input message="s0:AddEntrySoapIn"/>
      <output message="s0:empty"/>
    </operation>
    <operation name="getOrder">
      <input message="s0:getOrderSoapIn"/>
      <output message="s0:getOrderSoapOut"/>
    </operation>
  </portType>  
  <!-- binding declns -->
  <binding name="SimpleServiceSOAPBinding" type="s0:SimpleServiceRegistry">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
    <operation name="addEntry">
      <soap:operation soapAction="" style="document"/>
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    <operation name="getOrder">
      <soap:operation soapAction="" style="document"/>
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
       </output>
    </operation>
  </binding>
  <!-- service decln -->
  <service name="SService">
    <port name="SSPort" binding="s0:SimpleServiceSOAPBinding" >
      <soap:address location="http://localhost:8080/axis/services/SSPort"/>
    </port>
  </service>
</definitions>

For addEntry method in the below generated class, I expect the addEntry
method signature like
public void addEntry(SimpleService.ServiceDetails parameters) but it is
generated differently...

The *.impl.java class is as follows 

package SimpleService;

public class SimpleServiceSOAPBindingImpl implements
SimpleService.SimpleServiceRegistry{
    public void addEntry(SimpleService._AddEntry parameters) throws
java.rmi.RemoteException {
    }

    public java.lang.Integer getOrder(java.lang.String getOrderStr2) throws
java.rmi.RemoteException {
        return null;
    }
}

thanks...

-----Original Message-----
From: Bill Keese [mailto:[EMAIL PROTECTED]]
Sent: Monday, January 31, 2005 11:34 AM
To: [EMAIL PROTECTED]
Subject: Re: Interoprability issue of Axis with .Net


To start with:
1) each message should have only one part
2) the part should point to an element, not to a type
3) (for wrapped/literal) the part name should be "parameters", for both
response and request.

You are violating #1.

Things get more complicated for arrays and complex structures. See also
http://searchwebservices.techtarget.com/ateQuestionNResponse/0,289625,sid26_
cid594054_tax289201,00.html


Dhananjayan_K wrote:

  
Hi, 

Is there any place where i can get the list of interoperability issues of
.Net client using Axis server...
I am not able to create a client for .Net for the foll simple example.. 
Iam not able to find where I have gone wrong..

wsdl file...
<?xml version="1.0" encoding="utf-8"?>
<definitions 
targetNamespace="urn:SimpleService"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:s="http://www.w3.org/2001/XMLSchema" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" 
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:s0="urn:SimpleService">
 <types>
      <s:schema elementFormDefault="qualified"
targetNamespace="urn:SimpleService" >                
         <s:element minOccurs="0" maxOccurs="1" name="ItemName"
type="s:string" />
         <s:element minOccurs="1" maxOccurs="1" name="Quantity"
type="s:int" />
         <s:element minOccurs="1" maxOccurs="1" name="price"
    
type="s:float"
  
/>
         <s:element minOccurs="0" maxOccurs="1" name="currency"
type="s:string" />          
   	<s:element name="AddEntry">
       <s:complexType>
         <s:sequence>
           <s:element minOccurs="0" maxOccurs="1" name="str1"
type="s:string" />
           <s:element minOccurs="0" maxOccurs="1" name="po" type="s:int"
    
/>
  
         </s:sequence>
       </s:complexType>
     </s:element>    
     <s:element name="AddEntryResponse">
       <s:complexType>
         <s:sequence>      
           <s:element minOccurs="0" maxOccurs="1" name="getOrderResult"
type="s:int" />
         </s:sequence>
       </s:complexType>            
     </s:element>  
     <s:element name="getOrder">
       <s:complexType>
         <s:sequence>
           <s:element minOccurs="0" maxOccurs="1" name="str2"
type="s:string" />
         </s:sequence>
       </s:complexType>
     </s:element>     
     <s:element name="getOrderResponse">
       <s:complexType>
         <s:sequence>
           <s:element minOccurs="0" maxOccurs="1" name="getOrderResult"
type="s:int" />
         </s:sequence>
       </s:complexType>
       </s:element>          
   </s:schema>
 </types>
 <message name="empty"/>
  <message name="AddEntrySoapIn">
   <part name="parameters1" element="s0:ItemName" />
   <part name="parameters2" element="s0:Quantity" />
   <part name="parameters3" element="s0:price" />
   <part name="parameters4" element="s0:currency" />            
 </message>
 <message name="AddEntrySoapOut">
   <part name="resp1" element="s0:AddEntryResponse" />
 </message>
 <message name="getOrderSoapIn">
   <part name="req1" element="s0:getOrder" />
 </message>
 <message name="getOrderSoapOut">
   <part name="resp3" element="s0:getOrderResponse" />
 </message>    
 <portType name="SimpleServiceRegistry">
   <operation name="addEntry">
     <input message="s0:AddEntrySoapIn"/>
     <output message="s0:empty"/>
   </operation>
   <operation name="getOrder">
     <input message="s0:getOrderSoapIn"/>
     <output message="s0:getOrderSoapOut"/>
   </operation>
 </portType>  
 <!-- binding declns -->
 <binding name="SimpleServiceSOAPBinding" type="s0:SimpleServiceRegistry">
   <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
   <operation name="addEntry">
     <soap:operation soapAction="" style="document"/>
     <input>
       <soap:body use="literal" />
     </input>
     <output>
       <soap:body use="literal" />
     </output>
   </operation>
   <operation name="getOrder">
     <soap:operation soapAction="" style="document"/>
     <input>
       <soap:body use="literal" />
     </input>
     <output>
       <soap:body use="literal" />
      </output>
   </operation>
 </binding>
 <!-- service decln -->
 <service name="SService">
   <port name="SSPort" binding="s0:SimpleServiceSOAPBinding" >
     <soap:address location="http://localhost:8080/axis/services/SSPort"/>
   </port>
 </service>
</definitions>

deploy.wsdd

<deployment
   xmlns="http://xml.apache.org/axis/wsdd/"
   xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

 <!-- Services from SService WSDL service -->

 <service name="SSPort" provider="java:RPC" style="wrapped" use="literal">
     <parameter name="wsdlTargetNamespace" value="urn:SimpleService"/>
     <parameter name="wsdlServiceElement" value="SService"/>
     <parameter name="wsdlServicePort" value="SSPort"/>
     <parameter name="className"
value="SimpleService.SimpleServiceSOAPBindingSkeleton"/>
     <parameter name="wsdlPortType" value="SimpleServiceRegistry"/>
     <parameter name="allowedMethods" value="*"/>

 </service>
</deployment>

thanks...


 

    


  

Reply via email to