Well, this came up a few weeks ago and I thought others might find it useful. One of our test leads was working on some test automation. For this he needed to save and restore system configurations. No problem, System::ConfigSync handles this very nicely.

Or so I thought...

He was reporting to me serialization errors when trying to download or upload base64Binary encoded data (that's how we support binary data within our iControl interfaces). I thought to myself that this was odd as it's been tested with Apache WS-SOAP, VS.NET, SOAP::Lite, but it turns out that the base64binary methods were not tested with Axis. So, I gave it a run and I found the same problem!

I started digging in the generated client binding code and after a while of poking around I found that Axis was generating code to convert base64Binary type data using the org.apache.axis.encoding.ser.HexDeserializer class! I can't think of a valid reason for this as there exists a org.apache.axis.encoding.ser.Base64Deserializer that would work.

Now, on to how to solve the problem. We'll, I dug into the WSDL generation code and fixed the issue and got things working again.

Then I had the brilliant idea to update my build to the latest release to make sure my fix worked in there as well. So, I downloaded version 1.2RC1 and ran through a build with the released bits and well, wouldn't you know it, the wonderful folks working on the Axis project fixed my problem for me.

So, the lesson of the day is: When working with 3rd party packages (especially open source), make sure that you are always working with the latest bits if you have an issue. It seems so obvious after the fact...

[Listening to: Disarm - Smashing Pumpkins - Siamese Dream (03:17)]