Hi,

My service defined in wsdd is:

<service name="MyService" provider="java:HOST" style="rpc" use="literal">
        <wsdlFile>/MyWebService.wsdl</wsdlFile>
        <parameter name="wsdlTargetNamespace" value="http://my.webservice.namespace"/>
        <parameter name="wsdlServiceElement" value="MyWebService"/>
        <parameter name="wsdlServicePort" value="MyPort"/>
        <parameter name="wsdlPortType" value="MyPortType"/>
        <operation name="operation" qname="Operation" returnQName="Response" 
returnType="rtns:string" xmlns:rtns="http://www.w3.org/2001/XMLSchema";>
                <parameter name="Request" type="tns:simpleIn" 
xmlns:tns="my.schema.namespace"/>
        </operation>
        <parameter name="allowedMethods" value="operation"/>
        <parameter name="scope" value="Application"/>
        <typeMapping xmlns:ns="my.schema.namespace" qname="ns:simpleIn" 
type="java:java.lang.String" 
serializer="org.apache.axis.encoding.ser.SimpleSerializerFactory" 
deserializer="com.cadit.ws.serializers.SimpleTypeDeserializerFactory" 
encodingStyle=""/>
</service>

I've implement a provider of my own. As you can see from wsdd returnType is string.

I my provider i set the response with this code:

...
QName returnQName = operation.getReturnQName();
if (returnQName == null) 
        returnQName = new QName("", methodName + "Return");
                
// For SOAP 1.2, add a result
if (msgContext.getSOAPConstants() == SOAPConstants.SOAP12_CONSTANTS)
        returnQName = Constants.QNAME_RPC_RESULT;
                        
RPCParam param = new RPCParam(returnQName, result);
ParameterDesc paramDesc = operation.getReturnParamDesc();
param.setParamDesc(paramDesc);
if (!operation.isReturnHeader()) {
        resBody.addParam(param);
}
else resEnv.addHeader(new RPCHeaderParam(param));

resEnv.addBodyElement(resBody);
...

On tpcmonitor i see this response:

<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>
  <OperationResponse xmlns="">
   <Response xsi:type="ns1:simpleIn" xmlns:ns1="my.schema.namespace">blabla</Response>
  </OperationResponse>
 </soapenv:Body>
</soapenv:Envelope>

why xsi:type="ns1:simpleIn"?

I thought it was a xsd:string type. Is it an Axis bug?

thanks,

Andrea Tevoi

Reply via email to