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