The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.


Highlights
==========

    *  Direct SOAP dialog with ActiveWorks brokers.
    *  Apache Forwarding of SOAP requests to an ActiveWorks brokers.
    *  Make ActiveWorks requests via SOAP.


Overview
========

SOAP-ActiveWorks provides a transport layer for sending and receiving SOAP
requests to and from an ActiveWorks broker.  Example adapter and client scripts
are provided.

The approach mirrors that of the original Transport::HTTP modules from which
Transport::ActiveWorks borrows heavily.


Demo Scripts & Setup
====================
You must first have the SOAP and Aw packages installed.  It is advisable that
you also install the SOAP-AutoInvoke v0.25 or later to use the demo scripts.
Using the AW event_type_editor import the event defintions from
"server/soap.data".  This creates the "SOAP" client group, event scope,
SOAP::Request and SOAP::Reply events.

After the classes are installed with "make install" start "server/soap_adapter.pl"
in one window and dialog with it using "client/calculator.pl" in another
(which in turn depends on "Calculator.pm" module from SOAP-AutoInvoke).

The "client/get_time.pl" may also be used at this point.


To use an ActiveWorks broker thru an HTTP server prepare a mod_perl handler
similar to the following which can peacefully coexist with your present
SOAP HTTP installation:

-------------------------------8<------------------------------------------
package Apache::SOAPServer;
use strict;
use Apache;
use SOAP::Transport::HTTP::Apache;
use SOAP::Transport::ActiveWorks::HTTP::Apache;

sub handler {

    my $http_safe_classes = {
        ClassA => undef,
        ClassB => undef,
    };

    my $aw_safe_classes = {
        Calculator => undef,
        Time       => undef,
    };

    my $r = Apache->request();

    my %args = $r->args();

    if ( $http_safe_classes->{$args{class}} ) {
         #
         #  Handle requests here and now.
         #
         SOAP::Transport::HTTP::Apache->handler($http_safe_classes);
    }
    else {
         #
         #  Forward to an adapter for handling. 
         #
         SOAP::Transport::ActiveWorks::HTTP::Apache->handler($aw_safe_classes);
    }

}
1;
__END__
------------------------------->8------------------------------------------
~
Alternatively SOAP::Transport::ActiveWorks::HTTP::Proxy provides the
"http_proxy" subroutine which may be used as an optional dispatcher
with "safe_classes" with the standard SOAP::Transport::HTTP::Apache
handler.  This approach incurs a little more overhead however.

The "client/get_time_via_http.pl" script and the the "client/calculator.pl"
script from SOAP-AutoInvoke may both be used now thru the HTTP server.
It is assumed that a time adapter is running.


Future
======
With direct SOAP to ActiveWorks connectivity the possibility is present to
create persistant objects on the server side.


Comments and suggestions are of course appreciated.


Daniel
yacob@rcn.com