Index: [Article Count Order] [Thread]

Date: Mon, 23 Sep 2002 17:02:48 +0900 (JST)
From: Takeshi Honda <moecho21@yahoo.co.jp>
Subject: [webrickja:64] Re: サーブレットの引数
To: webrickja@notwork.org
Message-Id: <20020923080248.59915.qmail@web306.mail.yahoo.co.jp>
In-Reply-To: <20020921.220339.123560668.gotoyuzo@kotetsu.does.notwork.org>
X-Mail-Count: 00064

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/