
                   -=* SOAP-Lite-SmartProxy *=-


Highlights
==========

    *  Redirect/Forward a SOAP client on a per class basis.
    *  Redirect/Forward a SOAP request to a new SOAPAction URI.


Overview
========

The SmartProxy package is intended for use in a multi-server setting where
one or more servers may not be directly accessible to client side scripts.
The SmartProxy package makes request redirection and forwarding on a per class
basis easy.  Client scripts need not know which server is appropriate for a
specific request and may make all requests from a single master server which
can be relied upon to redirect clients to the server currently fulfilling a
given request.  The relieves a maintenance burden on the client side.  The
server may also redirect clients to a new class name or fully qualified
action URI (methods and arguments are assumed to remain constant however).


Setup & Demo Scripts
====================

Three servers are required for proper setup and testing.  The server that
will be redirecting and forwarding events lets call the "Smart" or "S"
server.  A second server, preferably behind a firewall, lets call the "F"
server.  The third server, which should be as accessible a the M server,
lets just call the "O" server for "Other".


On the S Server
---------------

 1) Install the SmartProxy package here, it should be installed on the other
    servers as well, but this is optional.

 2) Install lib/Apache/SmartProxy.pm (edit your Apache config files
    accordingly)

 3) Install server/SafeModules/Redirect.pm in the deployed modules directory
    for this server, edit it for your site.


On the F Server
---------------

 1) Install the server/SafeModules/Hello.pm and server/SafeModules/Calculator.pm
    files in the deployed modules directory for this server.


On the O Server
---------------

 1) Install the server/SafeModules/Hello.pm, server/SafeModules/Calculator.pm,
    server/SafeModules/GoodBye.pm and server/SafeModules/NewGoodBye.pm
    files in the deployed modules directory for this server.


From your client machine install the SmartProxy package and run through the
client/* scripts.  The client scripts must be edited to use your S server
as a proxy (except for client/http-hello.pl which will use your O server
directly).



Usage
=====

The SOAP-Lite package will use the smart proxy package whenever you use
a uri of the scheme 'httpx://'.  Which is of course highly contrived.  At
this stage of development I was unable to find a more transparent alternative.
With a little cutting and pasting the HTTPX.pm can be made to replace your
HTTP.pm module and the 'httpx' requirement eliminated.  Try at your own risk :)


Limitations
===========

The package has only been tested with simply URI redirection and not advanced.


Future
======

In the extreme smart proxy servers could check in with each other at start up
time to register the classes that they have available in their respective
deployed modules directories.  Any smart proxy could then forward or redirect
requests to the appropriate server.  This would be somewhat ORB like and
lessens the maintenance burden of keeping the Redirect.pm module up to date.  

Class name registries however convenient, open the door to a whole new world
of headaches -consider DNS for example.


Comments & Requests
===================

Daniel Yacob (yacob@rcn.com)
