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
