[Catalyst] Pilot error/cluelessness with XMLRPC
Joe Landman
landman at scalableinformatics.com
Mon Jul 23 04:09:39 GMT 2007
Hi folks:
Using XMLRPC for some service method calls to make life
"easier"/cleaner for some of our code. I am doing something wrong, as I
get errors (at the end).
I set up a simple application using the usual methods
catalyst.pl RDB
cd RDB
script/rdb_create.pl controller Job
I then set about to use portions of the examples in the
Catalyst::Plugin::Server::XMLRPC . Specifically I created a ping and
echo method, to test. I placed these in the Job.pm (rather than Root.pm
... is this an issue?). This is what they look like.
sub echo : XMLRPC { # available as: job.echo
my ( $self, $c, @args ) = @_;
$c->stash->{xmlrpc} = join ', ', @args;
$c->log->debug($args[0]);
}
sub ping : XMLRPCPath('/job/ping') { # available as: ping
my ( $self, $c ) = @_;
$c->stash->{xmlrpc} = 'Pong';
}
Ok. Light up the server, comes up fine:
landman at balto:~/remote_db_access/RDB$ script/rdb_server.pl
[debug] Debug messages enabled
[debug] Loaded plugins:
.----------------------------------------------------------------------------.
| Catalyst::Plugin::ConfigLoader 0.14
|
| Catalyst::Plugin::Server 0.24
|
| Catalyst::Plugin::Server::XMLRPC
|
| Catalyst::Plugin::Static::Simple 0.17
|
'----------------------------------------------------------------------------'
...
[debug] Loaded Private actions:
.----------------------+--------------------------------------+--------------.
| Private | Class | Method
|
+----------------------+--------------------------------------+--------------+
| /end | RDB::Controller::Root | end
|
| /job/ping | RDB::Controller::Job | ping
|
| /job/echo | RDB::Controller::Job | echo
|
'----------------------+--------------------------------------+--------------'
...
[debug] Loaded XMLRPCPath Method actions:
.--------------------------------------+---------------------------------------.
| XMLRPCPath Method | Private
|
+--------------------------------------+---------------------------------------+
| job.echo | /job/echo
|
| job.ping | /job/ping
|
'--------------------------------------+---------------------------------------'
Now try the echo call:
landman at balto:~$ rpc_client -u http://localhost:3000/rpc -m /job/echo \
abcd 123
I get this on the client side:
-----------------Output-----------
$VAR1 = {
'faultString' => 'Internal Server Error',
'faultCode' => '500'
};
And I get this on the server side:
[info] RDB powered by Catalyst 5.7007
You can connect to your server at http://balto:3000
[info] *** Request 1 (0.011/s) [10821] [Sun Jul 22 23:05:27 2007] ***
[debug] "POST" request for "rpc" from "127.0.0.1"
[debug] XML-RPC: Method called: /job/echo
[debug] Path is "job/echo"
[debug] abcd
[debug] XMLRPC 500 Errors:
Caught exception in RDB::Controller::Root->end
"Catalyst::Action::RenderView could not find a view to forward to."
[info] Request took 0.134054s (7.460/s)
.----------------------------------------------------------------+-----------.
| Action | Time
|
+----------------------------------------------------------------+-----------+
| /job/echo |
0.000191s |
| /end |
0.001559s |
'----------------------------------------------------------------+-----------'
Basically it is telling me that it doesn't have a view to forward to.
Is this needed in Server::XMLRPC ? I thought it did html encapsulated
XML ... no view needed.
Any thoughts/clues? Thanks.
Joe
--
Joe Landman
landman at scalableinformatics.com
More information about the Catalyst
mailing list