Gotokenさん、ごとうゆうぞうさん、ありがとうございました
。
しかし、自分の場合は、サーブレットを作るのに、HTTPServlet#AbstractServlet
を継承していません。
かわりに、Divパッケージにある、Div::TofuSessionを使って
、こちらのページのサンプルを真似て作っています。
http://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=YourFirstDiv
そうすると、mountしているクラスが、自分の作ったサーブレ
ットではなく、WEBrick::Tofuletとなり、
教えてくださったように、サーブレットにself.get_instance
メソッドを定義しても呼び出されませんし、initializeをオー
バーライドしても、Bartender以外の
引数は捨てられてしまうようです。
このように、Div::TofuSessionを使いたい場合、どうすれば
サーバからサーブレットに情報を渡すことができるでしょうか?
教えてください。
--- GOTOU Yuuzou <gotoyuzo@notwork.org> からのメッセー
ジ:
> 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
>
> --
> ごとうゆうぞう
>
__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo! http://bb.yahoo.co.jp/