I am trying to get SOAP to work under mod_perl. Googling about and reading what I can find on it, it looks like there are many ways to do this, but they are all giving me the same (non-working) result.

I have two systems I'm trying to do this on: A Mac with Apache 1.3.33/mod_perl 1.29, and a Solaris 8 box with Apache 1.3.28/mod_perl 1.27.

My most recent attempts have been with Apache::SOAP, so I'll use that as my example:

I have this in my httpd.conf:
<Location /steve/rpc/> SetHandler perl-script PerlHandler Apache::SOAP PerlSetVar dispatch_to 'Demo' </Location>
Demo.pm is in the @INC path. It contains:
package Demo; sub hi { return "hello, world"; }
I call it like this:
use SOAP::Lite +trace => [qw(all)]; my $soap = SOAP::Lite->uri('http://<my server>/Demo'); my $proxy = $soap->proxy('http://<my server>/steve/rpc/'); my $obj = $proxy->hi(); print $obj->result;
The (rather verbose) output is:
SOAP::Transport::new: () SOAP::Serializer::new: () SOAP::Deserializer::new: () SOAP::Parser::new: () SOAP::Lite::new: () SOAP::Transport::HTTP::Client::new: () SOAP::Lite::call: () SOAP::Serializer::envelope: () SOAP::Serializer::envelope: hi SOAP::Data::new: () SOAP::Data::new: () SOAP::Data::new: () SOAP::Data::new: () SOAP::Transport::HTTP::Client::send_receive: HTTP::Request=HASH(0x18ba +ed8) SOAP::Transport::HTTP::Client::send_receive: POST http://www.cm.aol.com/steve/rpc/ HTTP/1.1 Accept: text/xml Accept: multipart/* Content-Length: 448 Content-Type: text/xml; charset=utf-8 SOAPAction: "http://www.cm.aol.com/Demo#hi" <?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SO +AP-ENV:Body><namesp1:hi xmlns:namesp1="http://www.cm.aol.com/Demo"/></SOAP-ENV:Body></SOAP-ENV +:Envelope> SOAP::Transport::HTTP::Client::send_receive: HTTP::Response=HASH(0x18c +18e4) SOAP::Transport::HTTP::Client::send_receive: HTTP/0.9 200 (OK) EOF Client-Date: Thu, 18 Aug 2005 16:22:41 GMT Client-Peer: 10.178.2.10:80 Client-Response-Num: 1 Can't call method "result" on an undefined value at ./test1.pl line 13 +. SOAP::Lite::DESTROY: () SOAP::Serializer::DESTROY: () SOAP::Data::DESTROY: () SOAP::Data::DESTROY: () SOAP::Data::DESTROY: () SOAP::Data::DESTROY: () SOAP::Deserializer::DESTROY: () SOAP::Parser::DESTROY: () SOAP::Transport::DESTROY: () SOAP::Transport::HTTP::Client::DESTROY: ()
The problem is the $obj is always undefined. This happens whether or not the method I call actually exists, which leads me to believe the Demo.pm file isn't even being loaded, but I'm not sure of that. It seems like it SHOULD be loaded...

On both system, calling the method "$proxy->hi();" kills the Apache child process with an error like this in the error_log:
[Thu Aug 18 09:21:40 2005] [notice] child pid 868 exit signal Bus erro +r (10)
As I mentioned, I've tried other methods (SOAP::Transport::HTTP::Apache and Apache::Registry) and I get exactly the same result. I've followed examples from "mod_perl Developer's Cookbook", and "Programming Web Services with Perl" as well as from perl.apache.org and guide.soaplite.com. It's only the mod_perl examples I can't get to work. I'm using these scripts (Demo.pm and others) fine with CGI SOAP. I'm thinking something is misconfigured in mod_perl, but darned if I can figure out what.

Can anyone point out what I'm missing? Or at least point out a different FM to R?

Thanks


tektsu
kiku wa ittoki no haji kikanu wa matsudai no haji

Janitored by Arunbear - replaced pre tags with code tags.


In reply to Getting SOAP to work with mod_perl by tektsu

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.