|
NAMESOAP::WSDL::Server::Mod_Perl2 - mod_perl based SOAP server using SOAP::WSDLDESCRIPTIONPerl module providing a mod_perl2-based SOAP server using SOAP::WSDLCONFIGURATIONConfiguration is managed through the use of PerlSetVar directives. The following variables are available:dispatch_toTakes as a single argument the package name of the module which contains the methods which handle SOAP requests.PerlSetVar dispatch_to "WebPackage::SOAPMethods" soap_serviceTakes as a single argument the package name of the Server module generated by SOAP::WSDL usingwsdl2perl.pl --server file:///path/to/your/wsdl By default, the name of the package is MyServer::$SERVICENAME::$PORTTYPE. EXAMPLE: Given this sample WSDL which wsdl2perl.pl was run against to generate perl packages: <wsdl:portType name="WebServiceSoap"> [...] </wsdl:portType> [...] <wsdl:service name="WebService"> <wsdl:port name="WebServiceSoap" binding="tns:WebServiceSoap"> <soap:address location="http://www.example.com/WebService"/> </wsdl:port> </wsdl:service> The following directive would be correct: PerlSetVar soap_service "MyServer::WebService::WebServiceSoap" transport_class [OPTIONAL]Takes as a single argument the package name of the perl module containing a handle() method used to assemble the HTTP request which will be passed to the methods in your dispatch_to module (see above). A default handle() method is supplied in this module which should handle most common cases.handle() is called with the following parameters: $r - Apache::RequestRec object EXAMPLESThe following snippet added to httpd.conf will enable a SOAP server at /WebService on your webserver:<Location /WebService> SetHandler perl-script PerlResponseHandler SOAP::WSDL::Server::Mod_Perl2 PerlSetVar dispatch_to "WebPackage::SOAPMethods" PerlSetVar soap_service "MyServer::WebService::WebServiceSoap" </Location> PERFORMANCEOn my machine, a simple SOAP server (the HelloWorld service from the examples) needs around 20s to process 300 requests to a CGI script implemented with SOAP::WSDL::Server::CGI, around 4.5s to the same CGI 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.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 CGI scripts - and it allows one to configure SOAP servers in the Apache config. THREAD SAFETYSOAP::WSDL uses Class::Std::Fast, which is not guaranteed to be threadsafe yet. Thread safety in Class::Std::Fast is dependent on whethermy $foo = $bar++; is an atomic operation. I haven't found out yet. A load test on a single CPU machine with 4 clients using the worker mpm did not reveal any threading issues - but that does not mean there are none. CREDITSContributed (along with lots of other little improvements) by Noah Robin.Thanks! LICENSE AND COPYRIGHTThis file is part of SOAP-WSDL. You may distribute/modify it under the same terms as perl itselfAUTHORNoah Robin <noah.robin gmail.com>Based on SOAP::WSDL::Server::CGI, by Martin Kutter <martin.kutter fen-net.de> REPOSITORY INFORMATION$Rev: 583 $ $LastChangedBy: kutterma $ $Id: $ $HeadURL: $
Visit the GSP FreeBSD Man Page Interface. |