use warnings; use strict; my $serverhost = 'myserver.net'; my $serverport = '38383'; my $wsdl_filename = 'my.wsdl'; use XML::Compile::SOAP::Daemon::NetServer; use XML::Compile::WSDL11; use XML::Compile::SOAP11; use XML::Compile::Util qw/pack_type/; sub sendData($$$); my $daemon = XML::Compile::SOAP::Daemon::NetServer->new(); my $wsdl = XML::Compile::WSDL11->new($wsdl_filename); my %callbacks = ( sendData => \&sendData ); $daemon->operationsFromWSDL( $wsdl, callbacks => \%callbacks ); $daemon->setWsdlResponse($wsdl_filename); print "Starting daemon PID=$$ on $serverhost:$serverport\n"; $daemon->run ( name => 'NamesService', host => $serverhost, port => $serverport, # Net::Server::PreFork parameters min_servers => 1, max_servers => 1, min_spare_servers => 0, max_spare_servers => 0 ); sub sendData($$$) { my ($server, $in, $request) = @_; trace join '', 'sendData', Dumper $in; if( open OUT, '>', '/tmp/data.txt' ) { print OUT Dumper $in; print OUT Dumper $request; close OUT; } # 'return' hash matched to message part response in WSDL return +{ Return => "OK" }; }