Hippo2000 (2000/7/19)
SOAP::Transport::HTTP::CGI - 汎用 SOAP CGI ハンドラ
SOAPエンドポイントをバニラCGIを使って公開するためにこのクラスを使います。以下はこのクラスを使って公開されたSOAPエンドポイントの例です:
package ServerDemo;
use strict;
use SOAP::Transport::HTTP::CGI;
sub handler {
my $safe_classes = {
Calculator => undef,
};
SOAP::Transport::HTTP::CGI->;handler($safe_classes);
}
1;
(PerlスクリプトをCGIスクリプトとする方法について示すことは放ってあります−詳細はPerlドキュメントをご覧下さい)
このクラスはCGIにフックをかけ、SOAP特有の作業をするためにSOAP::Transport::HTTP::Server を呼び出す詳細についてカプセル化しています。
こうしてServerクラスは、単純に異なるフロント−エンド(例えば SOAP::Transport::HTTP::Apache)を組みたてることにより、(mod_perlを含めて)どのようなWebサーバ設定でも再利用することができます。
これがこのクラスでの唯一のメソッドです。そしてエンドポイントで呼ばれるであろうクラスの集まりがキーに入ったハッシュ・リファレンスを渡さなければなりません。例えばこのリストでクラスFooBarを指定し、クライアントがSOAPリクエストhttp://yourserver/soap?class=FooBar, を送信したら、SOAP::Transport::HTTP::Serverクラスは最終的にFooBar.pmをロードし、FooBarのインスタンスを作成し、そのhandle_request関数を呼び出そうとします。(詳細はSOAP::Transport::HTTP::Serverをご覧下さい)。このハッシュにクラスを入れなければ、SOAP/Perl はそれを実行しません。これは保証します。
ところでこのハッシュではキーだけが重要です、値は無視されます。
同時に、もし幾つかのヘッダを追加したかったり何かしたければ、レスポンスをいじくりまわすを止めるものはありません;あなたは常にSTDOUTにさらなるヘッダを出力せるようにprint()を呼び出すことができます。その時点でレスポンスがマーシャル化され、送信されるので、 SOAP::Transport::HTTP::Serverに戻す前にやっていることを確実に終わらせてください。
OptionalDispatcher 引数の説明についてはSOAP::Transport::HTTP::Serverをご覧下さい。
SOAP::Transport::HTTP::Server
Keith Brown
ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。