Hi,

Do you know why the axis2 changed wsdl from rpc/literal to document/literal ? I put the wsdl file in META-INF but the wsdl changed when I view it from axis2 service list page. This is the Axis2SampleDocLit sample wsdl installed with axis2 0.95.

Lianghwa

Deepal Jayasinghe wrote:
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

[EMAIL PROTECTED] 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" <[EMAIL PROTECTED]>
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, [EMAIL PROTECTED] <[EMAIL PROTECTED]> 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>





Reply via email to