Cedric,

Thanks for you're help, 

This is my current scenario;

The WSDD has;

<deployment
    xmlns="http://xml.apache.org/axis/wsdd/";
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java";
    xmlns:ta="http://www.fineos.com/XMLSchema/ta";>
  <service name="Garage/TestService1" provider="java:RPC">
      <parameter name="className"
value="com.fineos.ta.test.garage.services.soap.GarageServant"/>
      <operation name="CreateSession">
        <parameter name="userOid" type="ta:Oid"
        xmlns:ta="http://www.fineos.com/XMLSchema/ta"; mode="IN"/>
        <parameter name="userId" type="tns:string"
        xmlns:tns="http://www.w3.org/2001/XMLSchema"; mode="IN"/>
        <parameter name="requestContext" type="ta:RequestContext"
        xmlns:ta="http://www.fineos.com/XMLSchema/ta"; mode="INOUT"/>
      </operation>
     <parameter name="allowedMethods" value="CreateSession"/>
            <typeMapping qname="ta:RequestContext"
xmlns:ta="http://www.fineos.com/XMLSchema/ta";
 
languageSpecificType="java:com.fineos.ta.services.RequestContext"
 
serializer="com.fineos.ta.services.xml.SoapSerializerFactory"
 
deserializer="com.fineos.ta.services.xml.SoapDeserializerFactory"
                encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  </service>
</deployment>

Where 'RequestContext' is the cutom type;

On the Client-Side I am calling;

                soapSrv.setOperationName(new
QName("http://www.fineos.com/XMLSchema/ta","CreateSession";) );
                soapSrv.addParameter("userOid",
                        new QName("ta:Oid"),
                        javax.xml.rpc.ParameterMode.IN);
        
soapSrv.addParameter("userId",org.apache.axis.Constants.XSD_STRING,
                        javax.xml.rpc.ParameterMode.IN);
                soapSrv.addParameter("requestContext",
                        new QName("ta:RequestContext"),
                        javax.xml.rpc.ParameterMode.INOUT);
                soapSrv.setReturnType(null);        
            soapSrv.invoke(new Object[]{userOid, userId,
requestContextHolder});

Where 'soapSrv' is the axis call object.

If I invoke the service like this I get;

 faultCode: {http://xml.apache.org/axis/}Server.userException
 faultString: java.io.IOException: No serializer found for class
com.fineos.ta.services.RequestContextHolder in registry
org.apache.axis.encoding.TypeMappingImpl@7e8c4d

So is there something else I am missing ? You say I don't need to add the
RequestContextHolder to the typemapping, but how does axis decide how to
handle the Holder object ?

Again thanks for you're help so far, any more is appreciated,

Thanks,

Brian.

-----Original Message-----
From: Cédric Chabanois [mailto:[EMAIL PROTECTED]]
Sent: 13 December 2002 13:47
To: '[EMAIL PROTECTED]'
Subject: RE: Custom serializer/deserializer with INOU/OUT parameters



Yes, you need an Holder. 
This is not axis specific : See JAX-RPC spec (4.3.5)

You will not need to provide a specific serializer or type mapping for the
holder. 
Just provide serializer/deserializer and type mapping for your custom type.

You will also need to specify that your parameter is IN/OUT or OUT in the
wsdd (handler is not enough : it needs to know if the parameter is OUT or
INOUT)

Cédric

> I hadn't actually provided a holder. But let me get this 
> straight. I need to
> provide a holder in order that Axis understands that the type 
> is OUT/INOUT.
> If I provide this handler do I then need to provide a TypeMapping and
> Serializer that will understand that it should use the 
> 'value' of the holder
> to serialise and deserialise ?
> 
> Thanks,
> 
> Brian
> 
> -----Original Message-----
> From: Cédric Chabanois [mailto:[EMAIL PROTECTED]]
> Sent: 13 December 2002 11:56
> To: '[EMAIL PROTECTED]'
> Subject: RE: Custom serializer/deserializer with INOU/OUT parameters
> 
> 
> I use IN/OUT parameters for beans and arrays but I never 
> tried with custom
> serializer/deserializer.
> 
> But I thought providing a simple Holder class for the type 
> and declaring the
> parameter as OUT or INOUT in the wsdd would be enough.
> 
> What did you do exactly ?
> 
> 
> Cédric
> 
> > Hi,
> > 
> > I thougt I would re-send this just in case someone that has used
> > serializers/de-serializers mised it.
> > 
> > Has anyone tried to use a custom serializer/deserializer with 
> > INOUT or OUT
> > parameters. I have it working fine for IN parameters but 
> INOUT and OUT
> > parameters do not seem to be returned from the service (i.e. 
> > I can't see the
> > new value being re serialized on the way back).
> > 
> > Thanks,
> > 
> > Brian
> > 
> > 
> > 
> > **************************************************************
> > ************
> > The information contained in this e-mail is confidential,
> > may be privileged and is intended only for the use of the
> > recipient named above. If you are not the intended
> > recipient or a representative of the intended recipient,
> > you have received this e-mail in error and must not copy,
> > use or disclose the contents of this email to anybody
> > else. If you have received this e-mail in error, please
> > notify the sender immediately by return e-mail and
> > permanently delete the copy you received. This email has
> > been swept for computer viruses. However, you should
> > carry out your own virus checks.
> > 
> > 
> > Registered in Ireland, No. 205721. http://www.FINEOS.com
> > **************************************************************
> > ************
> > 
> 

Reply via email to