Hi,

I'm trying to find out how to write a service with some custom typemapping.
The actual data for the web service response is provided by a my own
handler. Here's my wsdd:

<?xml version="1.0" encoding="UTF-8"?>
<service  xmlns="http://xml.apache.org/axis/wsdd/"; name
="myNS:MySoapService" provider="Handler">
  <parameter name="allowedMethods" value="myOp"/>
  <parameter name="className" value="test.MyService"/>
<parameter name="handlerClass" value="test.MyHandler"/>
<typeMapping xmlns:java="http://xml.apache.org/axis/wsdd/providers/java";
    xmlns:ns="myType"
    qname="ns:test.myDataClass"
    type="java:test.MyDataClass"
         serializer="test.MySerializerFactory"
         deserializer="test.MyDeserializerFactory"
         encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; />
</service>

What I'm seeing from traces is that my handler is called and it creates a
SOAP message with a MyDataClass object, but I get an exception saying that
the serializer cannot be found:

java.io.IOException: No serializer found for class test.MyDataClass in
registry org.apache.axis.encoding.DefaultTypeMappingImpl@a918d5
      at
org.apache.axis.encoding.SerializationContextImpl.serializeActual(SerializationContextImpl.java:1037)
      at
org.apache.axis.encoding.SerializationContextImpl.serialize(SerializationContextImpl.java:633)
      at org.apache.axis.message.RPCParam.serialize(RPCParam.java:170)
      at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:284)
      at
org.apache.axis.message.MessageElement.output(MessageElement.java:651)
      at
org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:382)
      at
org.apache.axis.message.MessageElement.output(MessageElement.java:651)
      at
org.apache.axis.message.MessageElement.getAsString(MessageElement.java:573)
      at
org.apache.axis.message.MessageElement.getAsDocument(MessageElement.java:552)
      at test.MyTester.main(MyTester.java:67)

Here's my handler implementation:

public class MyHandler extends BasicHandler {

      public void invoke(MessageContext msgContext) throws AxisFault {
            System.out.println("### in my handler ###");
            SOAPEnvelope env=new SOAPEnvelope();
            Message msg=new Message(env);
            msg.setMessageContext(msgContext);
            msgContext.setResponseMessage(msg);
            RPCElement body = new RPCElement("myOp");
            RPCParam parm=new RPCParam("myData",new MyDataClass("Hello
World"));
            body.addParam(parm);
            env.addBodyElement(body);

      }
}

>From trace logs I can see that the factories for the (de)serializers get
called.

Can anybody point me into a direction where to look for?

Thanks, Dirk

Dirk Wollscheid
Websphere Database Development
email: [EMAIL PROTECTED], phone: 1.408.463.2802, tieline: 543
"Whatever you do will be insignificant, but it is very important that you
do it."
- Mahatma Gandhi

Reply via email to