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
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:
PerlSetVar options "compress_threshold => 1048576"
PerlSetVar dispatch_to "/usr/local/mystuff/soap,
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:
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
use ModPerl::Util ();
use Apache2::RequestRec ();
use Apache2::RequestIO ();
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 ();
The DBI module is built into my Perl distro, but MyModule resides under
lib. I use PERL5LIB to include this path to my @INC Could this be
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...