|Subject:||SOAP::Lite and Thread::Tie|
perl v5.8.6 built for darwin-thread-multi-2level Mac OS X, 10.4.5 $SOAP::Lite::VERSION 0.60 I am working on a application which uses Thread::Pool to manage worker threads collecting and updating information using SOAP::Lite. This was working fine until I ran into a SOAP server using Java. My function calls would simple cause the SOAP client to die. No errors, nothing. I was able to isolate the problem to the use of the Thread::Tie module (used by the Thread::Conveyor module which is used by the Thread::Pool module). Within the SOAP::Lite decode_value method, I found line 1885: undef $class if $schemaclass->can('anyTypeValue') && $schemaclass->anyTypeValue eq $class; dies unexpectedly on the $schemaclass->can() method call. The $schemaclass variable appears to be a scalar, not an object array. I'm not familiar with how this is supposed to work at that point in the code, I'm just going by what I was able to determine with limited testing. I was able to resolve the problem to my satisfaction by adding a ref check in the condition as: undef $class if ref $schemaclass && $schemaclass->can('anyTypeValue') && $schemaclass->anyTypeValue eq $class; I hope this helps you, I really want to be able to use SOAP::Lite with the thread pool module with SOAP::Lite for this project.