After my Apache/mod_perl/SOAP::Lite based server is running (on AIX) for a while and working perfectly, I get the following error when making a call from a SOAP::Lite client (Linux based):

Error occurred making remote request call
(Failed to locate method (search) in class (ABC_DB_SOAP) at
/usr/local/perl/
lib/site_perl/5.8.8/SOAP/Lite.pm line 2586.)

where the method is 'search' and the module name is 'ABC_DB_SOAP'

If I try to make the same call right away, it may work or I might get the same error. I assume this is because it tries to use the same httpd child process. As time goes on and the server is used more, the frequency of the errors is higher...

The problem only occurs on AIX (currently using AIX 5.3) and we are using Apache 2.2.4 and Perl 5.8.8 (built with threading on) with SOAP::Lite 0.69 from CPAN. Also - the location to all of this is NFS mounted - I am wondering if it could be a file locking issue, which I have seen before on AIX. I know this configuration (NFS mounted) is probably not the best way to run - but in our environment we have little choice (politics).


The entry in my httpd.conf file is:

<Location /server>
SetHandler perl-script
PerlHandler Apache::SOAP
PerlSetVar options "compress_threshold => 1048576"
PerlSetVar dispatch_to "/usr/local/
mystuff/soap, ABC_DB_SOAP"
</Location>


Reading the perldoc for SOAP::Lite, it mentions:

For dynamic deployment you can specify the name either directly (in
that case it will be "require"d without any restriction) or
indirectly, with a PATH. In that case, the ONLY path that will be
available will be the PATH given to the dispatch_to(
) method). For
information how to handle this situation see "SECURITY" section.


I 'use' various Perl modules in ABC_DB_SOAP. pm and also 'use' them in a mod_perl startup script which is defined in httpd.conf using PerlRequire - for example:


PerlRequire /usr/local/mystuff/
conf/startup.pl


So I think that this is synonymous to the methods offered in the SECURITY section of the perldoc. Here is what the startup.pl file looks like:

#!/usr/local/
perl/bin/perl

use ModPerl::Util ();
use Apache2::RequestRec ();
use Apache2::RequestIO ();
use Apache2::RequestUti
l ();
use Apache2::ServerRec ();
use Apache2::ServerUtil ();
use Apache2::Connection ();
use Apache2::Log ();
use Apache2::Const -compile => ':common';
use APR::Const -compile => ':common';
use APR::Table ();

use DBI;
use MyModule;
1;


The DBI module is built into my Perl distro, but MyModule resides under /usr/local/mystuff/ lib. I use PERL5LIB to include this path to my @INC Could this be an issue?

I have seen this issue mentioned before by Googling for it, Perl Monks, etc... - but have not found any definitive solutions.   I have posted this to the soaplite users list without a response.

Any help would be greatly appreciated - Thanks...


Bill Hess