binding.ws producing different results depending on whether WSDL is supplied or 
WSDL is generated
-------------------------------------------------------------------------------------------------

                 Key: TUSCANY-3571
                 URL: https://issues.apache.org/jira/browse/TUSCANY-3571
             Project: Tuscany
          Issue Type: Bug
    Affects Versions: Java-SCA-1.6
         Environment: All
            Reporter: Simon Laws


>From this thread 
>http://www.mail-archive.com/[email protected]/msg02537.html

For a scenario where a WSDL document is used to generate a reference interface 
the following is observed. 

Composite (I added testRef)
====================

   <component name="CalculatorServiceComponent">
               <implementation.java class="calculator.CalculatorServiceImpl"/>
       <!--implementation.spring
location="META-INF/spring/CalculatorService-context.xml"/-->
       <reference name="testRef">
           <binding.ws
uri="http://localhost:8080/sample-calculator-ws-webapp/AddServiceComponent"/>
       </reference>
       <reference name="addService" >
          <interface.java interface="calculator.AddService" />
           <binding.ws requires="authentication"
uri="http://localhost:8080/sample-calculator-ws-webapp/AddServiceComponent"/>
       </reference>
       <reference name="subtractService" target="SubtractServiceComponent" />
       <reference name="multiplyService" target="MultiplyServiceComponent" />
       <reference name="divideService" target="DivideServiceComponent" />
   </component>

Implementation ( I extended the calculator's add method)
=========================================

   public double add(double n1, double n2) {

       ArrayOfString existingTokens = new ArrayOfString();
       existingTokens.addString("XYZ");
       existingTokens.addString("ABC");

       Login login = new Login();
       login.setUserName("SomeUser");
       login.setPassword("SomePassword");
       login.setExistingTokenIds(existingTokens);

       testRef.login(login);

       return addService.add(n1, n2);
   }

Result
=====

The web services binding generates the following message on the wire


POST /sample-calculator-ws-webapp/AddServiceComponent HTTP/1.1
Content-Type: text/xml; charset=UTF-8
SOAPAction: ""
User-Agent: Axis2
Host: localhost:8080
Content-Length: 387

<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
 <soapenv:Body>
   <ns2:login xmlns:ns2="http://webservices.soa.mycompany.com/";>
     <arg0>
         <existingTokenIds>
            <string>XYZ</string>
           <string>ABC</string>
        </existingTokenIds>
        <password>SomePassword</password>
        <userName>SomeUser</userName>
     </arg0>
   </ns2:login>
 </soapenv:Body>
</soapenv:Envelope>

Where <arg0> represents the login object that's passed in.

To take a step closer to your composite I changed mine to configure
the web service binding with the WSDL directly.

Composite (I just changed the reference)
=============================

       <reference name="testRef">
           <binding.ws
wsdlElement="http://soa.mycompany.com/webservices/#wsdl.port(MyModuleService/MyModuleServiceSoap)"/>
       </reference>

Result
=====

Again a message appeared on the wire

POST /MyModuleFacility/MyModuleService.asmx HTTP/1.1
Content-Type: text/xml; charset=UTF-8
SOAPAction: "http://soa.mycompany.com/webservices/Login";
User-Agent: Axis2
Host: localhost:8080
Content-Length: 495

<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
  <soapenv:Body>
      <ns3:Login xmlns:ns2="http://webservices.soa.mycompany.com/";
                       xmlns:ns3="http://soa.mycompany.com/webservices/";
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                       xsi:type="login">
         <existingTokenIds>
             <string>XYZ</string>
            <string>ABC</string>
         </existingTokenIds>
         <password>SomePassword</password>
         <userName>SomeUser</userName>
       </ns3:Login>
    </soapenv:Body>
</soapenv:Envelope>

Note no <arg0> this time. Seems to be document literal but not
wrapped. Also the xsi:type looks wrong. Not sure why this is
happening.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to