世界線航跡蔵

Mad web programmerのYuguiが技術ネタや日々のあれこれをお送りします。

2006年03月27日

SOAP4Rをfcgi経由で動かす

SOAP4Rのwsdl2ruby.rbが--type serverで生成してくれるスタンドアローンサーバーはデバッグに便利だけど、重いし、本運用には向かない。ので、Apacheの下にFastCGI経由でぶらさげて動かす。

Apacheの設定は普通なので略。

wsdl2ruby.rb --wsdl /path/to/wsdl --cgi_stub

これで、CGI版のスタブコードが生成される。 ServiceNameService.cgiっていう名前の筈。アプリケーションのメインのクラスが::SOAP::RPC::StandaloneServerの代わりに::SOAP::RPC::CGIStubを継承したものになっているのがポイント。

このCGIStubクラスはFastCGIにも対応している代物なので、ちょっと触るだけで済む。具体的には、スタブコードの最後の

PortNameApp.new('app', nil).start

これを次のように書き換える。

require 'fcgi'
FCGI.each do |fcgi|
  app = PortNameApp.new('app', nil)
  app.set_fcgi_request(fcgi)
  app.start
end

残念ながら、wsdl2ruby.rbが生成するスタブコードは複数のポートはサポートしない。だから、ポートごとに同様に作業をして、別々のfcgiファイルにするしかない。

SOAP-Actionヘッダフィールドを見てmod_rewriteしてやったら、エンドポイントのlocationは1つで複数のポートを提供できるかな。

トラックバック

http://yugui.jp/articles/401/ping

現在のところトラックバックはありません

コメント

blog comments powered by Disqus

ご案内

前の記事
次の記事

タグ一覧

過去ログ

  1. 2016年07月
  2. 2016年01月
  3. 2015年09月
  4. 2015年08月
  5. 過去ログ一覧

フィード

フィードとは

その他

Powered by "rhianolethe" the blog system