use SOAP::Lite; use SOAP::Transport::HTTP; $SIG{PIPE} = 'IGNORE'; $daemon = SOAP::Transport::HTTP::Daemon -> new (LocalPort => 8001, LocalAddr => 'localhost', listen => 5) -> dispatch_to(qw(demo)); print "Contact to SOAP server at ", $daemon->url, "\n"; $daemon->handle;
package demo; sub new { print "called NEW\n"; my $pkg = shift; my $self = {}; bless($self, $pkg); return $self; } sub DESTROY { print "DESTROY - called\n"; } sub getVal { my $self = shift; print "val = $self->{VAR}\n"; } sub setVal { my $self = shift; print "set val\n"; $self->{VAR} = shift; }
use SOAP::Lite +autodispatch => uri => 'http://localhost/demo', proxy => 'http://localhost:8001/'; my $obj = demo->new(); $obj->getVal(); $obj->setVal(44); $obj->getVal();
Clearly my object isn't being destroyed or GC'd. If I run the client a second time (without restarting the server) it creates a new (empty) $self with VAR undefined.called NEW DESTROY - called val = DESTROY - called set val DESTROY - called val = 44 DESTROY - called
In reply to soap::lite - odd DESTROY behaviour by ethrbunny
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |