WOCGIAdaptor
2007/03/30 (Fri) 22:07:46 JST
WebObjectsはプロプライエタリですが、幸いWebサーバアダプタのソースコードは公開されています。 きっと「メンテナンスできる人材がいない」とか「公開してやるからメンテナンスは任せた」などの深い事情があるのかもしれませんが、こちらも負けずに釣られてやることにします。 Ruby Hacking Guideよろしく、気の向くままソースコードを読んでいきます。
手始めにCGIアダプタのソースコードからとりかかります。 ファイル1つのみ (WebObjects.c) の、最もシンプルなアダプタです。 これがわかればアダプタは作れるようになるんじゃないでしょうか。たぶん。
入出力
CGIアダプタは標準入出力を使います。
- HTTPヘッダは環境変数として渡される (char **envp)
- フォームデータは標準入力 (stdin)
- HTTPレスポンスは標準出力 (stdout) に出力される
処理の流れ
中心となる処理はmain()のみなので、main()に沿って読んでいきます。
- WOCGIDataTypes - データ構造
- WOCGIFunctions - 関数定義
- WOCGIGetURL - URLの取得
- WOCGIGetConfigURL - Webサーバアダプタ設定のURLの取得
- WOCGIGetAdaptorInfo - その他の環境変数の取得
- WOCGIInitializeAdaptor - アダプタの初期化
- WOCGIGetAppllicationName - アプリケーション名の取得
- WOCGIGenerateRequest - リクエストの生成
- WOCGIValidateHTTPMethod - HTTPメソッドの検証
- WOCGICopyHTTPHeaders - HTTPヘッダのコピー
- WOCGIGetFormData - フォームデータの取得
- WOCGIGetQueryString - クエリ文字列の取得
- WOCGIHandleRequest - アプリケーションへメッセージを送信
- WOCGISendResponse - レスポンスを送信
Inverse Pages: WebObjects基礎研究室