[smile] programs
  ABOUT - BLOG - CONTACT    
[mosaic headshot of me]

Frontier::Responder is a Perl class that works with Frontier::RPC2 to allow CGI processes to be XML-RPC servers. At some point in the future, you'll be able to get this class through CPAN, but until then you can find it here. I've also included my latest frobbing of the Frontier library, which includes an extension to the Apache::XMLRPC class (built for mod_perl). I've been playing with Frontier::RPC2 under mod_ssl and it works great! This release is very, very unofficial, but your feedback is welcomed.

Installation follows the typical perl Makefile.PL && make install mantra.

Here's the manpage:



NAME
       Frontier::Responder - Create XML-RPC listeners for 
                             normal CGI processes

SYNOPSIS
        use Frontier::Responder;
	my %methods = (
                        add => sub{ $_[0] + $_[1] },
			cat => sub{ $_[0] . $_[1] },
	              );
        my $res = Frontier::Responder->new( 
                                methods => \%methods,
                                          );
        print $res->answer;

DESCRIPTION

       Use Frontier::Responder whenever you need to
       create an XML-RPC listener using a standard CGI
       interface. To be effective, a script using this
       class will often have to be put a directory from
       which a web server is authorized to execute CGI
       programs. An XML-RPC listener using this library
       will be implementing the API of a particular XML-RPC
       application. Each remote procedure listed in the API
       of the user defined application will correspond to
       a hash key that is defined in the "new" method of
       a Frontier::Responder object. This is exactly the
       way Frontier::Daemon works as well.  In order
       to process the request and get the response, the
       "answer" method is needed. Its return value is XML
       ready for printing.

       For those new to XML-RPC, here is a brief
       description of this protocol.  XML-RPC is a way
       to execute functions on a different machine. Both
       the client's request and listeners response are
       wrapped up in XML and sent over HTTP. Because the
       XML-RPC conversation is in XML, the implementation
       languages of the server (here called a listener),
       and the client can be different. This can be a
       powerful and simple way to have very different
       platforms work together without acrimony.  Implicit
       in the use of XML-RPC is a contract or API that an
       XML-RPC listener implements and an XML-RPC client
       calls. The API needs to list not only the various
       procedures that can be called, but also the XML-RPC
       datatypes expected for input and output. Remember
       that although Perl is permissive about datatyping,
       other languages are not. Unforuntately, the XML-RPC
       spec doesn't say how to document the API. It
       is recomended that the author of a Perl XML-RPC
       listener should at least use POD to explain the API.
       This allows for the programmatic generation of a
       clean web page.

METHODS
       new( OPTIONS )
           This is the class constructor. As is
           traditional, it returns a blessed reference
           to a Frontier::Responder object. It expects
           arguments to be given like a hash (Perl's named
           parameter mechanism).  To be effective, populate
           the "methods" parameter with a hashref that
           has API procedure names as keys and subroutine
           references as values. See the SYNOPSIS for a
           sample usage.

       answer()
           In order to parse the request and execute the
           procedure, this method must be called. It
           returns a XML string that contains the
           procedure's response. In a typical CGI program,
           this string will simply be printed to STDOUT.

SEE ALSO
       perl(1), Frontier::RPC2(3)

       <http://www.scripting.com/frontier5/xml/code/rpc.html>

AUTHOR
       Ken MacLeod <ken@bitsko.slc.ut.us> wrote the
       underlying RPC library.

       Joe Johnston <jjohn@cs.umb.edu> wrote an adaptation
       of the Frontier::Daemon class to create this CGI
       XML-RPC listener class.


copyright © 2002 Joe Johnston