|
Hi,
I tried another
simple example from java.sun.com, for this iam not able to create Client from
.Net (by choosing
"Add Web
Reference")can anyone help...
thanks...
Hmm, I'm not
sure. Maybe it's getting confused by the minOccurs="0" on the "po" input
parameter to the AddEntry() function? You could try taking that out, or
using nillable="true" rather than
minOccurs="0".
Bill
Dhananjayan_K wrote:
Hi
Bill,
Thanks for
the response..I changed the .wsdl file as mentioned by your previous mail
related to void return type I took the
approach
3
3) Void
type <complexType name="Void"/> <element
name="UpdateDocumentResponse" type="tns:Void"/> <wsdl:message
name="UpdateDocumentResponse"> <wsdl:part name="parameters"
element="tns:UpdateDocumentResponse"/> </wsdl:message>
still iam
getting the same output when i try wsdl2java...
<s:complexType
name="Void"/>
<s:element
name="AddEntryResponse" type="s0:Void"/>
<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>
thanks...
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...
|