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 Dhananjayan_K <Dh...@Satyam.com> on 2005/01/31 06:46:51 UTC

Interoprability issue of Axis with .Net

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...

Re: Interoprability issue of Axis with .Net

Posted by Aleksander Slominski <as...@cs.indiana.edu>.
this article have examples of WSDLs (parameters: complexType, string,
base64, xsD:any) that seem to work with .NET:
http://java.sun.com/developer/technicalArticles/xml/jaxrpcpatterns2/

HTH,

alek

Bill Keese wrote:

>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...
>>
>>
>> 
>>
>>    
>>


-- 
The best way to predict the future is to invent it - Alan Kay


Re: Interoprability issue of Axis with .Net

Posted by Bill Keese <bi...@tech.beacon-it.co.jp>.
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...
>
>
>  
>