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

Apache 2, mod_perl, SOAP::Lite issue

Expand Messages
  • techrg99
    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
    Message 1 of 2 , Jan 11, 2008
    View Source
    • 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"
      </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. 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::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;
      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.

      Any ideas? Thanks in advance...
    • techrg99
      I should have mentioned that we are only having this problem only on AIX and that the Apache 2.2.4 and Perl 5.8.8 we are using are NFS mounted - as well as all
      Message 2 of 2 , Jan 14, 2008
      View Source
      • 0 Attachment
        I should have mentioned that we are only having this problem only on
        AIX and that the Apache 2.2.4 and Perl 5.8.8 we are using are NFS
        mounted - as well as all the Perl modules described in the original
        posting.

        I know this is probably not the best way to run - but in this case we
        have little choice...
      Your message has been successfully submitted and would be delivered to recipients shortly.