NAME

XML::Compile::SOAP::Daemon::AnyDaemon - SOAP server based on Any::Daemon

INHERITANCE

XML::Compile::SOAP::Daemon::AnyDaemon
  is a XML::Compile::SOAP::Daemon

XML::Compile::SOAP::Daemon::AnyDaemon
  is a Any::Daemon

SYNOPSIS

#### have a look in the examples directory!
use XML::Compile::SOAP::Daemon::AnyDaemon;
use XML::Compile::SOAP11;
use XML::Compile::SOAP::WSA;  # optional

my $daemon  = XML::Compile::SOAP::Daemon::AnyDaemon->new;

# daemon definitions from WSDL
my $wsdl    = XML::Compile::WSDL11->new(...);
$wsdl->importDefinitions(...); # more schemas
$daemon->operationsFromWSDL($wsdl, callbacks => ...);

# daemon definitions added manually (when no WSDL)
my $soap11  = XML::Compile::SOAP11::Server->new(schemas => $wsdl->schemas);
my $handler = $soap11->compileHandler(...);
$daemon->addHandler('getInfo', $soap11, $handler);

# see what is defined:
$daemon->printIndex;

# finally, run the server.  This never returns.
$daemon->run(@daemon_options);

DESCRIPTION

This module handles the exchange of SOAP messages over HTTP with Any::Daemon as daemon implementation. It is a simple pre-forked daemon, much easier than the Net::Server implementations.

We use HTTP::Daemon as HTTP-connection implementation. The HTTP::Request and HTTP::Response objects (provided by HTTP-Message) are handled via functions provided by XML::Compile::SOAP::Daemon::LWPutil.

This abstraction level of the object (code in this pm file) is not concerned with parsing or composing XML, but only worries about the HTTP transport specifics of SOAP messages. The processing of the SOAP message is handled by the XML::Compile::SOAP::Daemon base-class.

The server is as flexible as possible: accept M-POST (HTTP Extension Framework) and POST (standard HTTP) for any message. It can be used for any SOAP1.1 and SOAP1.2 mixture. Although SOAP1.2 itself is not implemented yet.

METHODS

Constructors

XML::Compile::SOAP::Daemon::AnyDaemon->new(OPTIONS)

Create the server handler, which extends some class which implements a Net::Server daemon.

As OPTIONS, you can pass everything accepted by Any::Daemon subroutine new, like pid_file, user, group, and workdir,

-Option            --Defined in     --Default
 accept_slow_select  XML::Compile::SOAP::Daemon  <true>
 output_charset      XML::Compile::SOAP::Daemon  'UTF-8'
 soap_action_input   XML::Compile::SOAP::Daemon  {}
 wsa_action_input    XML::Compile::SOAP::Daemon  {}
 wsa_action_output   XML::Compile::SOAP::Daemon  {}
accept_slow_select => BOOLEAN
output_charset => STRING
soap_action_input => HASH|ARRAY
wsa_action_input => HASH|ARRAY
wsa_action_output => HASH|ARRAY

Attributes

$obj->addSoapAction(HASH|PAIRS)

See "Attributes" in XML::Compile::SOAP::Daemon

$obj->addWsaTable(('INPUT'|'OUTPUT'), [HASH|PAIRS])

See "Attributes" in XML::Compile::SOAP::Daemon

$obj->outputCharset()

See "Attributes" in XML::Compile::SOAP::Daemon

Running the server

$obj->process(CLIENT, XMLIN, REQUEST, ACTION)

See "Running the server" in XML::Compile::SOAP::Daemon

$obj->run(OPTIONS)
-Option         --Default
 background       <true>
 client_maxreq    100
 client_reqbonus  0
 client_timeout   30
 host             undef
 listen           SOMAXCONN
 max_childs       10
 port             undef
 postprocess      undef
 server_name      undef
 socket           undef
background => BOOLEAN
client_maxreq => NUMBER

Maximum number of requests per connection.

client_reqbonus => SECONDS

Time to add to the timeout as bonus per handled client request. Fast clients get more time over slow clients, more time to reach their maximum number of requests.

client_timeout => SECONDS

The maximum time a connection may exist, before being terminated.

host => STRING

Ignored when a socket is provided, otherwise required.

listen => INTEGER

Ignored when a socket is provided.

max_childs => INTEGER
port => INTEGER

Ignored when a socket is provided, otherwise required.

postprocess => CODE

See the section about this option in the DETAILS chapter of the XML::Compile::SOAP::Daemon::LWPutil manual-page.

server_name => STRING
socket => SOCKET

Pass your own socket, in stead of having one created for you. The SOCKET must be an IO::Socket::INET (or compatible like IO::Socket::SSL and IO::Socket::IP)

Preparations

$obj->addHandler(NAME, SOAP, CODE)

See "Preparations" in XML::Compile::SOAP::Daemon

$obj->operationsFromWSDL(WSDL, OPTIONS)

See "Preparations" in XML::Compile::SOAP::Daemon

$obj->setWsdlResponse(FILENAME)

See "Preparations" in XML::Compile::SOAP::Daemon

Helpers

$obj->faultInvalidXML(ERROR)

See "Helpers" in XML::Compile::SOAP::Daemon

$obj->faultNotSoapMessage(NODETYPE)

See "Helpers" in XML::Compile::SOAP::Daemon

$obj->faultUnsupportedSoapVersion(ENV_NS)

See "Helpers" in XML::Compile::SOAP::Daemon

$obj->handlers(('SOAP11'|'SOAP12'|SOAP))

See "Helpers" in XML::Compile::SOAP::Daemon

$obj->printIndex([FILEHANDLE])

See "Helpers" in XML::Compile::SOAP::Daemon

$obj->soapVersions()

See "Helpers" in XML::Compile::SOAP::Daemon

SEE ALSO

This module is part of XML-Compile-SOAP-Daemon distribution version 3.01, built on February 13, 2012. Website: http://perl.overmeer.net/xml-compile/

Other distributions in this suite: XML::Compile, XML::Compile::SOAP, XML::Compile::SOAP12, XML::Compile::SOAP::Daemon, XML::Compile::SOAP::WSA, XML::Compile::C14N, XML::Compile::WSS, XML::Compile::Tester, XML::Compile::Cache, XML::Compile::Dumper, XML::Compile::RPC, XML::Rewrite, XML::eXistDB, and XML::LibXML::Simple.

Please post questions or ideas to the mailinglist at http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/xml-compile For live contact with other developers, visit the #xml-compile channel on irc.perl.org.

LICENSE

Copyrights 2007-2012 by Mark Overmeer. For other contributors see ChangeLog.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html