Implements a standalone XML-RPC server. The method #serve is left if a SIGHUP is sent to the program.
require "xmlrpc/server" s = XMLRPC::Server.new(8080) s.add_handler("michael.add") do |a,b| a + b end s.add_handler("michael.div") do |a,b| if b == 0 raise XMLRPC::FaultException.new(1, "division by zero") else a / b end end s.set_default_handler do |name, *args| raise XMLRPC::FaultException.new(-99, "Method #{name} missing" + " or wrong number of parameters!") end s.serve
Creates a new XMLRPC::Server instance, which is a
XML-RPC server listening on the given port
and accepts
requests for the given host
, which is localhost
by default.
The server is not started, to start it you have to call #serve.
The optional audit
and debug
parameters are
obsolete!
All additionally provided parameters in *a
are by-passed to XMLRPC::BasicServer.new.
# File xmlrpc/server.rb, line 575 def initialize(port=8080, host="127.0.0.1", maxConnections=4, stdlog=$stdout, audit=true, debug=true, *a) super(*a) require 'webrick' @server = WEBrick::HTTPServer.new(:Port => port, :BindAddress => host, :MaxClients => maxConnections, :Logger => WEBrick::Log.new(stdlog)) @server.mount("/", self) end
Call this after you have added all you handlers to the server. This method starts the server to listen for XML-RPC requests and answer them.
# File xmlrpc/server.rb, line 585 def serve signals = %w[INT TERM HUP] & Signal.list.keys signals.each { |signal| trap(signal) { @server.shutdown } } @server.start end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.