You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wsif-user@ws.apache.org by Simon Solomon <b0...@FDS.com> on 2003/03/14 17:21:12 UTC

WSIFOperation_ApacheAxis




Hi,

I am using WSIF to invoke the attached WSDL. (Using the ApacheAxis
Provider)
However, the generated soap message (attached below) contains an invalid
namespace tag for the
"greetData" part name as "<ns1:greetData href="#id0"/>" where it should
have looked like
"<greetData href="#id0"/>".

When I add the following lines of code to the WSIFOperation_ApacheAxis.java
setCallParameterNames(Call call) function, the correct soap message is
generated.

Does anyone know what I am missing or what's going on?
*This only happens in a document style service.
*This problem does not happen when I use the ApacheSoap Provider.

Thanks!

Added Code ->>
if(WSIFAXISConstants.STYLE_RPC.equals(operationStyle))
     name = new QName("", partName);
else
                name = new QName(inputNamespace, partName);

QName type = getPartType(p);
call.addParameter(name, type, ParameterMode.IN);

Invalid Saop ->>
<?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>
  <ns1:sayHello soapenv:encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1
="http://sde.fds.com/schema/mpsitest">
   <ns1:greetData href="#id0"/>
  </ns1:sayHello>
  <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:Data"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2
="http://sde.fds.com/schema/mpsitest">
   <name xsi:type="xsd:string">Simon Solomon</name>
   <id xsi:type="xsd:string">1234</id>
  </multiRef>
 </soapenv:Body>
</soapenv:Envelope>

WSDL Used ->>
<?xml version="1.0" encoding="utf-8"?>
<definitions 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:s0
="http://schema.sde.fds.com/mpsitest/complex2" xmlns:soapenc
="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm
="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime
="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace
="http://schema.sde.fds.com/mpsitest/complex2" xmlns
="http://schemas.xmlsoap.org/wsdl/">
  <types>
    <s:schema elementFormDefault="qualified" targetNamespace
="http://schema.sde.fds.com/mpsitest/complex2">
      <s:element name="sayHello">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="greetData" type
="s0:ArrayOfSomeData" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="ArrayOfSomeData">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="SomeData"
nillable="true" type="s0:SomeData" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="SomeData">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="name" type
="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="id" type="s:string"
/>
        </s:sequence>
      </s:complexType>
      <s:element name="sayHelloResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="sayHelloResult"
type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
    </s:schema>
  </types>
  <message name="sayHelloSoapIn">
    <part name="parameters" element="s0:sayHello" />
  </message>
  <message name="sayHelloSoapOut">
    <part name="parameters" element="s0:sayHelloResponse" />
  </message>
  <portType name="Complex2Soap">
    <operation name="sayHello">
      <input message="s0:sayHelloSoapIn" />
      <output message="s0:sayHelloSoapOut" />
    </operation>
  </portType>
  <binding name="Complex2Soap" type="s0:Complex2Soap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style
="document" />
    <operation name="sayHello">
      <soap:operation soapAction
="http://schema.sde.fds.com/mpsitest/complex2/sayHello" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
  </binding>
  <service name="Complex2">
    <documentation>MPSI Testing WebService</documentation>
    <port name="Complex2Soap" binding="s0:Complex2Soap">
      <soap:address location
="http://fs000xs3070514/mpsi_test/complex2.asmx" />
    </port>
  </service>
</definitions>


Simon Solomon
ssolomon@fds.com