Hi
Bill,
I tried your
suggestion..but it didnt work...any other suggestions...
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...
|