Plankton has asked for the wisdom of the Perl Monks concerning the following question:
Dear Monks,
I am trying to understand the sample code that is used to document SOAP::Transport::HTTP. Shown here:
Here is the output I get when I execute it:#!/usr/bin/perl -w use strict; use Data::Dumper; use SOAP::Transport::HTTP; # change LocalPort to 81 if you want to test it with soapmark.pl my $daemon = SOAP::Transport::HTTP::Daemon -> new (LocalAddr => 'localhost', LocalPort => 81) # specify list of objects-by-reference here -> objects_by_reference(qw(My::PersistentIterator My::SessionItera +tor My::Chat)) # specify path to My/Examples.pm here -> dispatch_to('/Your/Path/To/Deployed/Modules', 'Module::Name', ' +Module::method') ; print "Contact to SOAP server at ", $daemon->url, "\n"; $daemon->handle;
I really do not know what is suppose to happen but I did find the perl script perlmark.pl that is suppose to test soap servers. Here is the modified version of perlmark.pl I am running:$ sudo ./soap_server.pl Contact to SOAP server at http://localhost:81/
When execute perlmark.pl I get this output:$ cat perlmark.pl #!/usr/bin/perl -w #!d:\perl\bin\perl.exe # -- SOAP::Lite -- soaplite.com -- Copyright (C) 2001 Paul Kulchenko - +- use strict; use Benchmark; use SOAP::Lite on_fault => sub {my($soap, $res) = @_; die ref $res ? $ +res->faultdetail : $soap->transport->status, "\n"}; #use My::Examples; my %dests = ( # local => ['local://localhost/cgi-bin/soap.cgi' => 'htt +p://www.soaplite.com/My/Examples'], # mod_perl => ['http://localhost/soap/' => 'http://www.soap +lite.com/My/Examples'], # CGI => ['http://localhost/cgi-bin/soap.cgi' => 'http +://www.soaplite.com/My/Examples'], daemon => ['http://localhost:81/' => 'http://www.soaplit +e.com/My/Examples'], # daemon => ['http://localhost:81/' => 'http://www.soapli +te.com/My/Examples'], # 'Apache::Registry' => ['http://localhost/mod_perl/soap.mod_cgi' => +'http://www.soaplite.com/My/Examples'], # tcpip => ['tcp://localhost:82' => 'http://www.soaplite +.com/My/Examples'], # direct => ['' => 'My::Examples'], ); my $s; my %tests = ( simple => sub {$s->getStateName(1)}, array => sub {$s->getStateName((1) x 100)}, string => sub {$s->getStateName(1 x 100)}, ); my $testnum = 3; my $testtime = 5; my %result; print STDERR <<DISCLAIMER; This test should be used only for comparison different Perl server implementations running in your environment. DISCLAIMER print STDERR "All tests may take up to ", keys(%dests) * keys(%tests) +* $testnum * $testtime, " sec\n"; foreach my $dest (keys %dests) { my($proxy, $uri) = @{$dests{$dest}}; $s = $proxy ? SOAP::Lite->proxy($proxy)->uri($uri) : $uri; foreach my $test (keys %tests) { printf STDERR "%s [%s] ", $dest, $test; eval {$tests{$test}->()}; warn('skipped, ', $@), next if $@; my($tps) = 0; for (1..$testnum) { my $r = Benchmark::countit($testtime => $tests{$test}); my($pu, $ps, $n) = @{$r}[1,2,5]; $tps += $n / ($pu + $ps); print STDERR "."; } printf STDERR " %.5s call/s\n", $result{$dest}{$test} = $tps / $te +stnum; } }
Why is it skipping tests? I suspect it has something to do with this bit of the server code ...$ ./perlmark.pl This test should be used only for comparison different Perl server implementations running in your environment. All tests may take up to 45 sec daemon [array] skipped, daemon [simple] skipped, daemon [string] skipped,
... what are object-by-reference and what are "Deploy Modules"? I am certain that there are many Monks here that can enlighten me. THANKS!# specify list of objects-by-reference here -> objects_by_reference(qw(My::PersistentIterator My::SessionItera +tor My::Chat)) # specify path to My/Examples.pm here -> dispatch_to('/Your/Path/To/Deployed/Modules', 'Module::Name', ' +Module::method')
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: I do not understand how to write a SOAP server.
by Khen1950fx (Canon) on Mar 25, 2012 at 08:21 UTC | |
|
Re: I do not understand how to write a SOAP server.
by Anonymous Monk on Mar 25, 2012 at 07:58 UTC |