I have written a custom deserializer that subclasses
DeserializerImpl.  It is connected to the EJB
provider.  For methods where only one argument needs
to use this deserializer, it works fine.  However, for
any number of invocations 2 or greater, the first
argument deserializes fine and all objects after the
first show up at the EJB as null.  Examples:

Sent At Client          Received At EJB
a                       a
a, b                    a, null
a, b, c                 a, null, null
null, b                 null, b
null, b, c              null, b, null

Same problem on Axis 1.1 and 1.2 alpha.

The deserializer is quite simple--it only overrides
onStartChild, in which it deserializes the object and
calls setValue(), then returns null.

Looking at things in my Eclipse debugger, I see that
the deserializer gets invoked the proper number of
times, and calls setValue() with the respective
deserialized object.  HOWEVER, in the 2nd and
subsequent deserializations, the following
DeserializerImpl instance variables are corrupt:

* isEnded is false
* targets is null
* value is set to the original (arg1) deserialized
object

The id instance variable increments correctly, i.e.
"id0", "id1", "id2", etc.  Clearly, the original
deserializer is getting reused (and possibly some
parent handler as well), and I have established that
its constructor only gets invoked once by its factory.
 

I just can't figure it out by tracing the code; the
whole recursive handler thing just throws me for a 
loop!  Thoughts?  Is it a (known?) bug in the Axis
framework, or have I violated some rule?  Any help
much appreciated!


__________________________________
Do you Yahoo!?
Yahoo! Search - Find what you�re looking for faster
http://search.yahoo.com

Reply via email to