.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "SOAP::WSDL::Server::Mod_Perl2 3pm" .TH SOAP::WSDL::Server::Mod_Perl2 3pm "2022-10-14" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" SOAP::WSDL::Server::Mod_Perl2 \- mod_perl based SOAP server using SOAP::WSDL .SH "DESCRIPTION" .IX Header "DESCRIPTION" Perl module providing a mod_perl2\-based \s-1SOAP\s0 server using \s-1SOAP::WSDL\s0 .SH "CONFIGURATION" .IX Header "CONFIGURATION" Configuration is managed through the use of PerlSetVar directives. The following variables are available: .SS "dispatch_to" .IX Subsection "dispatch_to" Takes as a single argument the package name of the module which contains the methods which handle \s-1SOAP\s0 requests. .PP .Vb 1 \& PerlSetVar dispatch_to "WebPackage::SOAPMethods" .Ve .SS "soap_service" .IX Subsection "soap_service" Takes as a single argument the package name of the Server module generated by \s-1SOAP::WSDL\s0 using .PP .Vb 1 \& wsdl2perl \-\-server file:///path/to/your/wsdl .Ve .PP By default, the name of the package is MyServer::$SERVICENAME::$PORTTYPE. .PP \&\s-1EXAMPLE:\s0 Given this sample \s-1WSDL\s0 which wsdl2perl was run against to generate perl packages: .PP .Vb 3 \& \& [...] \& \& \& [...] \& \& \& \& \& \& .Ve .PP The following directive would be correct: .PP .Vb 1 \& PerlSetVar soap_service "MyServer::WebService::WebServiceSoap" .Ve .SS "transport_class [\s-1OPTIONAL\s0]" .IX Subsection "transport_class [OPTIONAL]" Takes as a single argument the package name of the perl module containing a \&\fBhandle()\fR method used to assemble the \s-1HTTP\s0 request which will be passed to the methods in your dispatch_to module (see above). A default \fBhandle()\fR method is supplied in this module which should handle most common cases. .PP \&\fBhandle()\fR is called with the following parameters: .PP .Vb 1 \& $r \- Apache::RequestRec object .Ve .SH "EXAMPLES" .IX Header "EXAMPLES" The following snippet added to httpd.conf will enable a \s-1SOAP\s0 server at /WebService on your webserver: .PP .Vb 6 \& \& SetHandler perl\-script \& PerlResponseHandler SOAP::WSDL::Server::Mod_Perl2 \& PerlSetVar dispatch_to "WebPackage::SOAPMethods" \& PerlSetVar soap_service "MyServer::WebService::WebServiceSoap" \& .Ve .SH "PERFORMANCE" .IX Header "PERFORMANCE" On my machine, a simple \s-1SOAP\s0 server (the HelloWorld service from the examples) needs around 20s to process 300 requests to a \s-1CGI\s0 script implemented with SOAP::WSDL::Server::CGI, around 4.5s to the same \s-1CGI\s0 with mod_perl enabled, and around 3.2s with SOAP::WSDL::Server::Mod_Perl2. All these figures include the time for creating the request and parsing the response. .PP As general advice, using mod_perl is highly recommended in high-performance environments. Using SOAP::WSDL::Server::Mod_Perl2 yields an extra 20% speedup compared with mod_perl enabled \s-1CGI\s0 scripts \- and it allows one to configure \&\s-1SOAP\s0 servers in the Apache config. .SH "THREAD SAFETY" .IX Header "THREAD SAFETY" \&\s-1SOAP::WSDL\s0 uses Class::Std::Fast, which is not guaranteed to be threadsafe yet. Thread safety in Class::Std::Fast is dependent on whether .PP .Vb 1 \& my $foo = $bar++; .Ve .PP is an atomic operation. I haven't found out yet. .PP A load test on a single \s-1CPU\s0 machine with 4 clients using the worker mpm did not reveal any threading issues \- but that does not mean there are none. .SH "CREDITS" .IX Header "CREDITS" Contributed (along with lots of other little improvements) by Noah Robin. .PP Thanks! .SH "LICENSE AND COPYRIGHT" .IX Header "LICENSE AND COPYRIGHT" This file is part of SOAP-WSDL. You may distribute/modify it under the same terms as perl itself .SH "AUTHOR" .IX Header "AUTHOR" Noah Robin .PP Based on SOAP::WSDL::Server::CGI, by Martin Kutter .SH "REPOSITORY INFORMATION" .IX Header "REPOSITORY INFORMATION" .Vb 4 \& $Rev: 583 $ \& $LastChangedBy: kutterma $ \& $Id: $ \& $HeadURL: $ .Ve