Loading ...
Sorry, an error occurred while loading the content.

6088Apache 2, mod_perl, SOAP::Lite issue

Expand Messages
  • techrg99
    Jan 11, 2008
    • 0 Attachment
      After my Apache/mod_perl/SOAP::Lite based server is running for a
      while and working perfectly, I get the following error when making a
      SOAP call:

      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 uses a different or same
      httpd child process. As time goes on and the server is used more, the
      frequency of the errors is higher...

      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"

      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. Here is what the startup.pl file looks like:


      use ModPerl::Util ();
      use Apache2::RequestRec ();
      use Apache2::RequestIO ();
      use Apache2::RequestUtil ();
      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;

      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.

      Any ideas? Thanks in advance...
    • Show all 2 messages in this topic