GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  XML::COMPILE::SOAP::DAEMON::ANYDAEMON (3)

.ds Aq ’

NAME

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

CONTENTS

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.

Extends DESCRIPTION in XML::Compile::SOAP::Daemon.

METHODS

Extends METHODS in XML::Compile::SOAP::Daemon.

    Constructors

Extends Constructors in XML::Compile::SOAP::Daemon.
XML::Compile::SOAP::Daemon::AnyDaemon-><B>newB>(%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

Extends Attributes in XML::Compile::SOAP::Daemon.
$obj-><B>addSoapActionB>(HASH|PAIRS) Inherited, see Attributes in XML::Compile::SOAP::Daemon
$obj-><B>addWsaTableB>( <’INPUT’|’OUTPUT’>, [HASH|PAIRS] ) Inherited, see Attributes in XML::Compile::SOAP::Daemon
$obj-><B>outputCharsetB>() Inherited, see Attributes in XML::Compile::SOAP::Daemon

    Running the server

Extends Running the server in XML::Compile::SOAP::Daemon.
$obj-><B>processB>($client, $xmlin, $request, $action) Inherited, see Running the server in XML::Compile::SOAP::Daemon
$obj-><B>runB>(%options)


 -Option         --Default
  background       <true>
  child_init       undef
  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
child_init => CODE This CODE reference will get called by each child which gets started, before the accept waiting starts. Ideal moment to start your database-connection.
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

Extends Preparations in XML::Compile::SOAP::Daemon.
$obj-><B>addHandlerB>($name, $soap, CODE) Inherited, see Preparations in XML::Compile::SOAP::Daemon
$obj-><B>operationsFromWSDLB>($wsdl, %options) Inherited, see Preparations in XML::Compile::SOAP::Daemon
$obj-><B>setWsdlResponseB>( $filename, [$filetype] ) Inherited, see Preparations in XML::Compile::SOAP::Daemon

    Helpers

Extends Helpers in XML::Compile::SOAP::Daemon.
$obj-><B>faultInvalidXMLB>($error) Inherited, see Helpers in XML::Compile::SOAP::Daemon
$obj-><B>faultNotSoapMessageB>($nodetype) Inherited, see Helpers in XML::Compile::SOAP::Daemon
$obj-><B>faultUnsupportedSoapVersionB>($env_ns) Inherited, see Helpers in XML::Compile::SOAP::Daemon
$obj-><B>handlersB>( <’SOAP11’|’SOAP12’|$soap> ) Inherited, see Helpers in XML::Compile::SOAP::Daemon
$obj-><B>printIndexB>( [$fh] ) Inherited, see Helpers in XML::Compile::SOAP::Daemon
$obj-><B>soapVersionsB>() Inherited, see Helpers in XML::Compile::SOAP::Daemon

DETAILS

Extends DETAILS in XML::Compile::SOAP::Daemon.

    Operation handlers

Extends Operation handlers in XML::Compile::SOAP::Daemon.

    Returning errors

Extends Returning errors in XML::Compile::SOAP::Daemon.

    AnyDaemon with SSL

First, create certificates and let them be signed by a CA (or yourself) See http://devsec.org/info/ssl-cert.html to understand this.



  # generate secret private key
  openssl genrsa -out privkey.pem 1024

  # create a "certification request" (CSR)
  openssl req -new -key privkey.pem -out certreq.csr

  # send the CSR to the Certification Authority or self-sign:
  openssl x509 -req -days 3650 -in certreq.csr -signkey privkey.pem -out newcert.pem

  # publish server certificate
  ( openssl x509 -in newcert.pem; cat privkey.pem ) > server.pem
  ln -s server.pem `openssl x509 -hash -noout -in server.pem`.0   # dot-zero



Assuming that the certificates are in ’certs/’, the program looks like this:



  use Log::Report;
  use XML::Compile::SOAP::Daemon::AnyDaemon;
  use XML::Compile::WSDL11;
  use IO::Socket::SSL       SSL_VERIFY_NONE;
  use IO::Socket            SOMAXCONN;

  my $daemon = XML::Compile::SOAP::Daemon::AnyDaemon->new;
  my $wsdl   = XML::Compile::WSDL11->new($wsdl);

  my %handlers = ();
  $daemon->operationsFromWSDL($wsdl, callbacks => \%handlers);

  my $socket = IO::Socket::SSL->new
   ( LocalHost  => localhost
   , LocalPort  => 4444
   , Listen     => SOMAXCONN
   , Reuse      => 1
   , SSL_server => 1
   , SSL_verify_mode => SSL_VERIFY_NONE
   , SSL_key_file    => certs/privkey.pem
   , SSL_cert_file   => certs/server.pem
   ) or error __x"cannot create socket at {interface}: {err}"
         , interface => "$host:$port"
         , err => IO::Socket::SSL::errstr();

  $daemon->run
   ( name       => basename($0)
   , max_childs => 1
   , socket     => $socket
   , child_init => \&for_instance_connect_to_db
   )



SEE ALSO

This module is part of XML-Compile-SOAP-Daemon distribution version 3.11, built on January 14, 2015. Website: http://perl.overmeer.net/xml-compile/

Other distributions in this suite: XML::Compile, XML::Compile::SOAP, XML::Compile::WSDL11, XML::Compile::SOAP12, XML::Compile::SOAP::Daemon, XML::Compile::SOAP::WSA, XML::Compile::C14N, XML::Compile::WSS, XML::Compile::WSS::Signature, XML::Compile::Tester, XML::Compile::Cache, XML::Compile::Dumper, XML::Compile::RPC, XML::Rewrite 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-2015 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

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 XML::COMPILE::SOAP::DAEMON::ANYDAEMON (3) 2015-01-14

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.