[Catalyst] XML RPC Server and RenderView

Nicolas Raspail nicolas.raspail at whisperingvault.net
Fri Aug 24 18:04:32 GMT 2007


 >From Joe Landman (Sun, 22 Jul 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:
 >
 >[EMAIL PROTECTED]:~/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:
 >
 >[EMAIL PROTECTED]:~$ 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

Hello,

when playing with Catalyst::Plugin::Server::XMLRPC following the 
documentation, I get the same behaviour as Joe.

I have search the archive and found thie mail from Joe Landman , and he 
has the same problem, but unfortunately, nobody answer him.

I have copy/paste his email because his setup and mine are the same, and 
I don't have my script available right now.

To get my app running, at the end of my RPC function, I must put an 
$c->output(' ').

I would like to know if it is the correct thing to do, or I'm doing 
something wrong.

Thanks agin

Regards

Nicolas



More information about the Catalyst mailing list