|
If you'd like to avoid the overhead of reading SOAP::Lite and your program into memory on every invocation you can run your CGI under Apache::Registry, or you can create a mod_perl handler.
In your httpd.conf
1 <Location /soap>
2 SetHandler perl-script
3 PerlHandler SOAP::Handler
4 </Location>
a file in your PERL5LIB: SOAP/Handler.pm
1 package SOAP::Handler;
2
3 use strict;
4 use SOAP::Transport::HTTP;
5
6 my $server = SOAP::Transport::HTTP::Apache
7 ->dispatch_to( '/path/to/modules' );
8
9 sub handler {
10 $server->handler( @_ );
11 }
12
13 1;
a file: /path/to/modules/xmethods-CurrencyExchange.pm
1 package xmethods-CurrencyExchange;
2
3 use SOAP::Lite;
4
5 sub getRate {
6 my ( $country1, $country2 ) = @_;
7 my $result = calculate( $country1, $country2 );
8 return( SOAP::Data->name( 'Result' => $result )->type( 'float' ) );
9 }
10
11 1;
|