$Id: servlet.html,v 1.3 2000/05/02 13:28:45 mas Exp $

shttpsrv-1.04 + servlet

postgreSQLのデータをWebで公開しようといろいろ作ってるうちに おもしろいのができました。

Servlet?

原さんの公開された shttpsrv を改造して、rubyのモジュールを サーバに動的にロードできるようにしました。 設定ファイルで指定したURLを要求すると、htmlファイルを転送する 代わりに、rubyのモジュールが動的に生成したページを転送します。 また、SSIの中で使うこともできます。

最初のリクエストでは、ロードする時間が必要ですが、 二度目以降は、CGIよりもずっとレスポンスが早いです。 また、httpのリクエストを越えて長生きする(?)オブジェクトを 使いたい時にも便利です。

Install

shttpsrv-1.04に対するパッチをあてて下さい。 shttpsrv.rb と conf.rb が変更されると思います。

conf.rb

conf.rb に変数 ScriptAlias が追加されます。 サービスのrequireする名前、モジュール名などを定義します。

ServletAlias = [
#  [仮想パス, requireする名前, モジュール名],
   ['/rb/', 'testserv.rb', 'TestServ'],		#1
   ['counter', 'counter.rb', 'Counter']		#2
]

#1 では http://localhost:8088/rb/arg1/arg2/ という要求があると 次の文が評価されます。

   require 'testserv.rb'
   TestServ.service('arg1/arg2')

#2 では foo.shtml 中に <!--#ruby service="counter args"--> という文があると次の文が評価されます。

   requrie 'counter.rb'
   Counter.service_ssi('args', 'foo.shtml')
service(arg) ではヘッダを含んだ一ページを生成することを期待し、 service_ssi(arg, filename) ではHTMLの一部を生成することを期待しています。


File|Link


m_seki@mva.biglobe.ne.jp