In message <20020921105707.74371.qmail@web301.mail.yahoo.co.jp>,
`Takeshi Honda <moecho21@yahoo.co.jp>' wrote:
> > 同じである以上は同じ動作をするんじゃないかというのはともかく、
> > 具体的にどう違う動作をさせたいのでしょうか?
>
> 設定ファイルをサーブレットとは別に外だしして、
> URLによって違う設定ファイルを読み込ませて、
> その設定ファイルに従った動作をする、
> というのを考えています。
HTTPServer#mount の3番目以降の引数は、サーブレットを初期化する
際に呼ばれる get_instance というメソッドに渡されます。
HTTPServlet#AbstractServlet を継承する場合は、get_instance は
new と同じなので、initialize を適当にオーバーライドすることで
引数を調整することができます。
require 'webrick'
include WEBrick
class ArgTest < HTTPServlet::AbstractServlet
def initialize(server, arg1, arg2, arg3)
super
@arg1, @arg2, @arg3 = arg1, arg2, arg3
end
def do_GET(req, res)
res['content-type'] = "text/plain"
res.body = ""
res.body << "arg1 = #@arg1\n"
res.body << "arg2 = #@arg2\n"
res.body << "arg3 = #@arg3\n"
end
end
s=HTTPServer.new( :Port => 8808 )
s.mount("/test1", ArgTest, 1, 2, 3)
s.mount("/test2", ArgTest, 100, 200, 300)
trap("INT"){ s.shutdown }
s.start
--
ごとうゆうぞう