axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Deepal Jayasinghe <dee...@opensource.lk>
Subject Re: WSDL Vs Generated WSDL question
Date Fri, 21 Apr 2006 03:57:47 GMT
Hi Lianghwa;

The auto generated wsdl will only work if the server side uses
RPCMessageReceiver, the problem is auto generation is based on java
reflection and we can not get the exact original wsdl. So the best
solution is either put ur original wsdl file there or if you want axis2
to generate wsdl file for you then use RPCMessageReceiver as the message
receiver.

Lianghwa Jou wrote:

> Hi,
>
> Did you include your original WSDL in the .aar file ?
>
> I had a very similar problem when I tried the axis2 sample -
> Axis2SampleDocLit. If you don't include the original WSDL in the .aar
> file, Axis2 will generate one for you and it is very different from
> the original WSDL. If you code your soap message based on this WSDL,
> the axis2 will NOT accept the soap message.  If you include the
> original WSDL in the .aar file, the Axis2 still changes it from
> rpc/literal to document/literal but it is basically the same as the
> original wsdl. If you code your soap message based on this wsdl, it
> will work fine. The axis2 generated wsdl is just not working right in
> this case. If someone can tell me why, I will really appreciate it.
>
>    I am using axis 0.95 as the server and php as the client.
>
> Lianghwa
>
> vea@comcast.net wrote:
>
>> Heya,
>>
>> Thanks for the catch!  I corrected the namespace error.
>>
>> I know that I'm going to have to use my own WSDL since AXIS removes
>> my schema imports - the generated WSDL's kinda useless since WSDL
>> consumers like XMLSpy and .Net's WSDL.exe can't properly generate a
>> request from it (One of the nicer elements of .Net is their generated
>> WSDL embeds the schema inside the generated WSDL so you have to
>> complete picture).  Problem is, since my original WSDL is different
>> from Axis's interpretation, I've found it's equally useless to
>> provide my original WSDL because .Net cannot generate a client from
>> it.  It could call the web service correctly, but the response was
>> bad because it was expecting the child element to be <product>, not
>> <products>.  My coworker and I were able to hand edit the .Net code
>> to read the reponse, but we were aiming for interoperability off of
>> the WSDL. 
>> I'm not sure what I want to do at this point.  We've been playing
>> around with the XSD in hopes we can create the response in a way that
>> we don't lose interoperability.  I *think* if we embded Product
>> inside Products, we'll get a better result.  We just lose the
>> reusability of having Product as a top level element.  I guess it's
>> all part of learning! 
>>
>> Thanks,
>>
>> Anna   
>>     -------------- Original message ----------------------
>> From: "Anne Thomas Manes" <atmanes@gmail.com>
>>  
>>
>>> Note that you have a namespace declaration error in the <schema> in
>>> Research.WSDL:
>>>
>>> xmlns:svc="svc"
>>>
>>> You need to fix this problem, but it won't fix the problem. Axis
>>> likes to
>>> change the repeating element name inside an array. I suggest that
>>> you tell
>>> Axis to use your WSDL rather than letting it generate its own. (use
>>> <wsdlFile> in the WSDD).
>>>
>>> Anne
>>>
>>> On 4/18/06, vea@comcast.net <vea@comcast.net> wrote:
>>>    
>>>
>>>> Heya,
>>>>
>>>>         I'm pretty new to AXIS/XSD/WSDL, so hopefully this is a easy
>>>> question.
>>>> I am using AXIS+Castor to create a WSDL first, Document/Literal
>>>> wrapped
>>>> web service
>>>> that returns a list of products.  I was aiming for a structure like:
>>>>
>>>> <products>
>>>>         <product>
>>>>         .
>>>>         .
>>>>         </product>
>>>> </products>
>>>>
>>>>
>>>> After running my WSDL/XSD through WSDL2Java and Castor's SourceGen,
>>>> I am
>>>> able to get a list
>>>> of products using the AXIS client stubs, but the SOAP response doesn't
>>>> match the structure
>>>> above and I'm not sure why.  It does match the generated WSDL, but
>>>> I'm not
>>>> sure why the WSDL
>>>> changed the way it did.  Anyone got any ideas?  I've included my XSDs,
>>>> WSDL, SOAP response,
>>>> and generated WSDL below.
>>>>
>>>>                 Thanks,
>>>>                         Anna
>>>>
>>>> Reasearch.xsd
>>>> =============
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>> <xsd:schema
>>>>         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>>>>         targetNamespace="http://xxx.com/xxx/xxx/xxx/xxx"
>>>>         elementFormDefault="qualified"
>>>>         attributeFormDefault="unqualified"
>>>>         xmlns:tns="http://xxx.com/xxx/xxx/xx/xxx">
>>>>
>>>>         <xsd:simpleType name="statType">
>>>>                 <xsd:restriction base="xsd:double">
>>>>                         <xsd:minExclusive value="0"/>
>>>>                         <xsd:maxInclusive value="1"/>
>>>>                 </xsd:restriction>
>>>>         </xsd:simpleType>
>>>>
>>>>         <xsd:element name="product">
>>>>                 <xsd:complexType>
>>>>                         <xsd:sequence>
>>>>                                 <xsd:element name="productName"
>>>> type="xsd:string"/>
>>>>                                 <xsd:element name="productType"
>>>> type="xsd:string"/>
>>>>                                 <xsd:element name="tickerOrAcronym"
>>>> type="xsd:string"/>
>>>>                                 <xsd:element name="managerFee"
>>>> type="xsd:integer"/>
>>>>                                 <xsd:element name="managerMin"
>>>> type="xsd:integer"/>
>>>>                                 <xsd:element name="expenseRatio"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element name="oneYearReturn"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element name="threeYearReturn"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element name="fiveYearReturn"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element name="tenYearReturn"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element name="lastQtrReturn"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element name="yearToDateReturn"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element name="threeYearStdDev"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element name="threeYearBeta"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element
>>>> name="threeYeareSharpeRatio"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element name="threeYearAlpha"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element name="theeYearUpCap"
>>>> type="tns:statType"/>                         <xsd:element
>>>> name="threeYearDownCap" type="tns:statType"/>
>>>>                                 <xsd:element name="threeYearBestQtr"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element name="threeYearWorstQtr"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element name="threeYearCons"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element
>>>> name="threeYearNegativeQtr"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element name="threeYearInfoRatio"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element
>>>> name="threeYearDownsideRisk"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element name="avgAnnualTurnover"
>>>> type="tns:statType"/>
>>>>                                 <xsd:element name="inactive"
>>>> type="xsd:boolean"/>
>>>>                                 <xsd:element name="sleeveManager"
>>>> type="xsd:boolean"/>
>>>>                         </xsd:sequence>
>>>>                 </xsd:complexType>
>>>>         </xsd:element>
>>>>
>>>>         <xsd:element name="products">
>>>>                 <xsd:complexType>
>>>>                         <xsd:sequence>
>>>>                                 <xsd:element ref="tns:product"
>>>> maxOccurs="unbounded"/>
>>>>                         </xsd:sequence>
>>>>                 </xsd:complexType>
>>>>         </xsd:element>
>>>>
>>>> </xsd:schema>
>>>>
>>>> ===================
>>>> ResearchService.xsd
>>>> ===================
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>> <xsd:schema
>>>>         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>>>>         targetNamespace="http://xxx.com/xxx/xxx/xxx/xxx/service"
>>>>         elementFormDefault="qualified"
>>>>         attributeFormDefault="unqualified"
>>>>         xmlns:tns="http://xxx.com/xxx/xxx/xxx/xxx/service"
>>>>         xmlns:types="http://xxx.com/xxx/xxx/xxx/xxx">
>>>>
>>>>
>>>>         <xsd:import
>>>>                 namespace="http://xxx.com/xxx/xxx/xxx/xxx"
>>>>                 schemaLocation="Research.xsd"/>
>>>>
>>>>
>>>>         <!-- Methods signatures -->
>>>>         <xsd:element name="getProduct">
>>>>                 <xsd:complexType>
>>>>                         <xsd:sequence>
>>>>                                 <xsd:element name="productName"
>>>> type="xsd:string"/>
>>>>                         </xsd:sequence>
>>>>                 </xsd:complexType>
>>>>         </xsd:element>
>>>>
>>>>         <xsd:element name="getProductResponse">
>>>>                 <xsd:complexType>
>>>>                         <xsd:sequence>
>>>>                                 <xsd:element ref="types:products" />
>>>>                         </xsd:sequence>
>>>>                 </xsd:complexType>
>>>>         </xsd:element>
>>>>
>>>>
>>>> </xsd:schema>
>>>>
>>>> =============
>>>> Research.WSDL
>>>> =============
>>>> <definitions    targetNamespace="http://xxx.com/xxx/xxx/wsdl"
>>>>                 xmlns="http://schemas.xmlsoap.org/wsdl/"
>>>>                 xmlns:tns="http://xxx.com/xxx/xxx/wsdl"
>>>>                 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>>>>                 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
>>>>                 xmlns:svc="http://xxx.com/xxx/xxx/xxx/xxx/service"
>>>>                 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>>>>         <types>
>>>>                 <xsd:schema
>>>>                         targetNamespace="http://xxx.com/xxx/xxx/wsdl"
>>>>                 xmlns:svc="svc"
>>>>                 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>>>>                                 <xsd:import
>>>>                                         namespace="
>>>> http://xxx.com/xxx/xxx/xxx/xxx/service"
>>>>
>>>>                                               
>>>
>>> schemaLocation="../xsd/ResearchService.xsd"/>
>>>    
>>>
>>>>                 </xsd:schema>
>>>>         </types>
>>>>         <message name="getProduct">
>>>>                 <part name="parameters" element="svc:getProduct" />
>>>>         </message>
>>>>
>>>>         <message name="getProductResponse">
>>>>                 <part name="parameters"
>>>> element="svc:getProductResponse"
>>>> />
>>>>         </message>
>>>>
>>>>         <portType name="ResearchPortType">
>>>>                 <operation name="getProduct">
>>>>                         <input message="tns:getProduct" />
>>>>                         <output message="tns:getProductResponse" />
>>>>                 </operation>
>>>>         </portType>
>>>>
>>>>         <binding name="ResearchSOAPBinding"
>>>> type="tns:ResearchPortType">
>>>>                 <soap:binding style="document" transport="
>>>> http://schemas.xmlsoap.org/soap/http" />
>>>>                 <operation name="getProduct">
>>>>                         <soap:operation style="document"
>>>> soapAction="getProduct" />
>>>>                         <input>
>>>>                                 <soap:body use="literal" />
>>>>                         </input>
>>>>                         <output>
>>>>                                 <soap:body use="literal" />
>>>>                         </output>
>>>>                 </operation>
>>>>         </binding>
>>>>
>>>>         <service name="ResearchService">
>>>>                 <port name="ResearchSOAPPort"
>>>> binding="tns:ResearchSOAPBinding">
>>>>                         <soap:address location="
>>>> http://xx.xx.xx.xx:xxxx/xxx/services/ResearchSOAPPort" />
>>>>                 </port>
>>>>         </service>
>>>>
>>>> </definitions>
>>>>
>>>>
>>>> =============
>>>> SOAP response
>>>> =============
>>>>
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>> <soapenv:Envelope
>>>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>>>> xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="
>>>> http://www.w3.org/2001/XMLSchema-instance">
>>>>         <soapenv:Body>
>>>>                 <getProductResponse xmlns="
>>>> http://xxx.com/xxx/xxx/xxx/xxx/service">
>>>>                         <ns1:products xmlns:ns1="
>>>> http://xxx.com/xxx/xxx/xxx/xxxh">
>>>>                                 <ns1:products>
>>>>
>>>>                                               
>>>
>>> <ns1:productName>Product1</ns1:productName>
>>>    
>>>
>>>>                                        
>>>> <ns1:productType>SAM</ns1:productType>
>>>>
>>>>                                               
>>>
>>> <ns1:tickerOrAcronym>XXX</ns1:tickerOrAcronym>
>>>    
>>>
>>>>                                        
>>>> <ns1:managerFee>150</ns1:managerFee>
>>>>
>>>>                                               
>>>
>>> <ns1:managerMin>150000</ns1:managerMin>
>>>    
>>>
>>>>                                         <ns1:expenseRatio>0.44
>>>> </ns1:expenseRatio>
>>>>                                         <ns1:oneYearReturn>0.12
>>>> </ns1:oneYearReturn>
>>>>                                         <ns1:threeYearReturn>0.44
>>>> </ns1:threeYearReturn>
>>>>                                         <ns1:fiveYearReturn>0.22
>>>> </ns1:fiveYearReturn>
>>>>                                         <ns1:tenYearReturn>0.02
>>>> </ns1:tenYearReturn>
>>>>                                         <ns1:lastQtrReturn>0.12
>>>> </ns1:lastQtrReturn>
>>>>                                         <ns1:yearToDateReturn>0.33
>>>> </ns1:yearToDateReturn>
>>>>                                         <ns1:threeYearStdDev>0.11
>>>> </ns1:threeYearStdDev>
>>>>                                         <ns1:threeYearBeta>0.23
>>>> </ns1:threeYearBeta>
>>>>                                        
>>>> <ns1:threeYeareSharpeRatio>0.23
>>>> </ns1:threeYeareSharpeRatio>
>>>>                                         <ns1:threeYearAlpha>0.56
>>>> </ns1:threeYearAlpha>
>>>>                                         <ns1:theeYearUpCap>0.44
>>>> </ns1:theeYearUpCap>
>>>>                                         <ns1:threeYearDownCap>0.16
>>>> </ns1:threeYearDownCap>
>>>>                                         <ns1:threeYearBestQtr>0.49
>>>> </ns1:threeYearBestQtr>
>>>>                                         <ns1:threeYearWorstQtr>0.64
>>>> </ns1:threeYearWorstQtr>
>>>>                                         <ns1:threeYearCons>0.56
>>>> </ns1:threeYearCons>
>>>>                                         <ns1:threeYearNegativeQtr>0.74
>>>> </ns1:threeYearNegativeQtr>
>>>>                                         <ns1:threeYearInfoRatio>0.23
>>>> </ns1:threeYearInfoRatio>
>>>>                                        
>>>> <ns1:threeYearDownsideRisk>0.93
>>>> </ns1:threeYearDownsideRisk>
>>>>                                         <ns1:avgAnnualTurnover>0.95
>>>> </ns1:avgAnnualTurnover>
>>>>                                        
>>>> <ns1:inactive>false</ns1:inactive>
>>>>
>>>>                                               
>>>
>>> <ns1:sleeveManager>false</ns1:sleeveManager>
>>>    
>>>
>>>>                                 </ns1:products>
>>>>                                 <ns1:products>
>>>>
>>>>                                               
>>>
>>> <ns1:productName>Product2</ns1:productName>
>>>    
>>>
>>>>                                               
>>>
>>> <ns1:productType>FUND</ns1:productType>
>>>    
>>>
>>>>                                               
>>>
>>> <ns1:tickerOrAcronym>YYY</ns1:tickerOrAcronym>
>>>    
>>>
>>>>                                        
>>>> <ns1:managerFee>20</ns1:managerFee>
>>>>
>>>>                                               
>>>
>>> <ns1:managerMin>100000</ns1:managerMin>
>>>    
>>>
>>>>                                         <ns1:expenseRatio>0.64
>>>> </ns1:expenseRatio>
>>>>                                         <ns1:oneYearReturn>0.12
>>>> </ns1:oneYearReturn>
>>>>                                         <ns1:threeYearReturn>0.46
>>>> </ns1:threeYearReturn>
>>>>                                         <ns1:fiveYearReturn>0.78
>>>> </ns1:fiveYearReturn>
>>>>                                         <ns1:tenYearReturn>0.44
>>>> </ns1:tenYearReturn>
>>>>                                         <ns1:lastQtrReturn>0.38
>>>> </ns1:lastQtrReturn>
>>>>                                         <ns1:yearToDateReturn>0.19
>>>> </ns1:yearToDateReturn>
>>>>                                         <ns1:threeYearStdDev>0.76
>>>> </ns1:threeYearStdDev>
>>>>                                         <ns1:threeYearBeta>0.33
>>>> </ns1:threeYearBeta>
>>>>                                        
>>>> <ns1:threeYeareSharpeRatio>0.56
>>>> </ns1:threeYeareSharpeRatio>
>>>>                                         <ns1:threeYearAlpha>0.86
>>>> </ns1:threeYearAlpha>
>>>>                                         <ns1:theeYearUpCap>0.23
>>>> </ns1:theeYearUpCap>
>>>>                                         <ns1:threeYearDownCap>0.77
>>>> </ns1:threeYearDownCap>
>>>>                                         <ns1:threeYearBestQtr>0.88
>>>> </ns1:threeYearBestQtr>
>>>>                                         <ns1:threeYearWorstQtr>0.63
>>>> </ns1:threeYearWorstQtr>
>>>>                                         <ns1:threeYearCons>0.55
>>>> </ns1:threeYearCons>
>>>>                                         <ns1:threeYearNegativeQtr>0.23
>>>> </ns1:threeYearNegativeQtr>
>>>>                                         <ns1:threeYearInfoRatio>0.56
>>>> </ns1:threeYearInfoRatio>
>>>>                                        
>>>> <ns1:threeYearDownsideRisk>0.77
>>>> </ns1:threeYearDownsideRisk>
>>>>                                         <ns1:avgAnnualTurnover>0.34
>>>> </ns1:avgAnnualTurnover>
>>>>                                        
>>>> <ns1:inactive>true</ns1:inactive>
>>>>
>>>>                                               
>>>
>>> <ns1:sleeveManager>false</ns1:sleeveManager>
>>>    
>>>
>>>>                                 </ns1:products>
>>>>                         </ns1:products>
>>>>                 </getProductResponse>
>>>>         </soapenv:Body>
>>>> </soapenv:Envelope>
>>>>
>>>> ==============
>>>> Generated WSDL
>>>> ==============
>>>> <?xml version="1.0" encoding="UTF-8" ?>
>>>> <wsdl:definitions targetNamespace="http://xxx.com/xxx/xxx/wsdl"
>>>> xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="
>>>> http://xxx.com/xxx/xxx/wsdl" xmlns:intf="http://xxx.com/xxx/xxx/wsdl"
>>>> xmlns:tns1="http://xxx.com/xxx/xxx/xxx/xxx/service" xmlns:tns2="
>>>> http://xxx.com/xxx/xxx/xxx/xxx" xmlns:wsdl="
>>>> http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="
>>>> http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="
>>>> http://www.w3.org/2001/XMLSchema">
>>>>         <!--
>>>>                 WSDL created by Apache Axis version: 1.3
>>>>                 Built on Oct 05, 2005 (05:23:37 EDT)
>>>>
>>>>           -->
>>>> <wsdl:types>
>>>> <schema elementFormDefault="qualified" targetNamespace="
>>>> http://xxx.com/xxx/xxx/xxx/xxx/service" xmlns="
>>>> http://www.w3.org/2001/XMLSchema">
>>>>   <import namespace="http://xxx.com/xxx/xxx/xx/xxx" />
>>>> <element name="getProduct">
>>>> <complexType>
>>>> <sequence>
>>>>   <element name="productName" type="xsd:string" />
>>>>   </sequence>
>>>>   </complexType>
>>>>   </element>
>>>> <element name="getProductResponse">
>>>> <complexType>
>>>> <sequence>
>>>>   <element maxOccurs="unbounded" name="products"
>>>> type="tns2:product" />
>>>>   </sequence>
>>>>   </complexType>
>>>>   </element>
>>>>   </schema>
>>>>   </wsdl:types>
>>>> <wsdl:message name="getProductRequest">
>>>>   <wsdl:part element="tns1:getProduct" name="parameters" />
>>>>   </wsdl:message>
>>>> <wsdl:message name="getProductResponse">
>>>>   <wsdl:part element="tns1:getProductResponse" name="parameters" />
>>>>   </wsdl:message>
>>>> <wsdl:portType name="ResearchPortType">
>>>> <wsdl:operation name="getProduct">
>>>>   <wsdl:input message="impl:getProductRequest"
>>>> name="getProductRequest" />
>>>>   <wsdl:output message="impl:getProductResponse"
>>>> name="getProductResponse"
>>>> />
>>>>   </wsdl:operation>
>>>>   </wsdl:portType>
>>>> <wsdl:binding name="ResearchSOAPPortSoapBinding"
>>>> type="impl:ResearchPortType">
>>>>   <wsdlsoap:binding style="document" transport="
>>>> http://schemas.xmlsoap.org/soap/http" />
>>>> <wsdl:operation name="getProduct">
>>>>   <wsdlsoap:operation soapAction="getProduct" />
>>>> <wsdl:input name="getProductRequest">
>>>>   <wsdlsoap:body use="literal" />
>>>>   </wsdl:input>
>>>> <wsdl:output name="getProductResponse">
>>>>   <wsdlsoap:body use="literal" />
>>>>   </wsdl:output>
>>>>   </wsdl:operation>
>>>>   </wsdl:binding>
>>>> <wsdl:service name="ResearchService">
>>>> <wsdl:port binding="impl:ResearchSOAPPortSoapBinding"
>>>> name="ResearchSOAPPort">
>>>>   <wsdlsoap:address location="
>>>> http://xx.xx.xx.xx:xxx/xxx/services/ResearchSOAPPort" />
>>>>   </wsdl:port>
>>>>   </wsdl:service>
>>>>   </wsdl:definitions>
>>>>
>>>>
>>>>       
>>>
>>
>>
>>
>>   
>
>
>

-- 
Thanks,
Deepal
................................................................
~Future is Open~ 



Mime
View raw message