tektsu has asked for the wisdom of the Perl Monks concerning the following question:
Demo.pm is in the @INC path. It contains:<Location /steve/rpc/> SetHandler perl-script PerlHandler Apache::SOAP PerlSetVar dispatch_to 'Demo' </Location>
I call it like this:package Demo; sub hi { return "hello, world"; }
The (rather verbose) output is: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 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...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: ()
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.[Thu Aug 18 09:21:40 2005] [notice] child pid 868 exit signal Bus erro +r (10)
Janitored by Arunbear - replaced pre tags with code tags.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Getting SOAP to work with mod_perl
by jeteve (Pilgrim) on Aug 22, 2005 at 17:35 UTC | |
by tektsu (Acolyte) on Aug 23, 2005 at 13:40 UTC | |
|
Re: Getting SOAP to work with mod_perl
by fokat (Deacon) on Aug 23, 2005 at 16:32 UTC |