ratio - rational - irrational

« 私は乗り越える。私を乗り越えよ。 | Main | 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つで複数のポートを提供できるかな。



トラックバック

この記事のトラックバックpingのURL:
http://idm.s9.xrea.com/blog/mt-tb.cgi/399

コメント

新しくコメントをつける

よくわからない理由により、コメントが即座には反映されないかもしれませんか゛、ボタンを押して元の画面に戻ってきたならたぶん正しく送信されています。




blog操作

検索


カテゴリー

このブログについて

あわせて読みたい

follow yugui at http://twitter.com
© 2006 Yugui

Powered by Movable Type 3.2-ja-2