SOAP::Transport::HTTP::Server

Hippo2000 (2000/7/19)


目次


名前

SOAP::Transport::HTTP::Server - サーバ側のHTTP SOAP/Perlサポート


概要

    use SOAP::Transport::HTTP::Server;

説明

それが結び付けられているWebブラウザとは独立に、SOAPサーバのためのHTTP関連の洗練されたものを全て提供します。これは1つの関数を公開します(それは新しいWebサーバ環境にSOAP/Perlを合わせるのでなければ、呼ばれることはありません)。これはリクエストについての情報を取得したり、応答のヘッダと内容をを送信したりのような、多くのことをおこなうための関数ポインタの組を提供します。

このクラスについて知るうえで何が重要かといえば、SOAPリクエストを扱いたいのであればそれがあなたに何を期待するかです。あなたは引数なしのnew()を介して生成されるクラスを実装しなければなりません、そして1つの関数を実装しなければなりません。


handle_request(HeaderArray, Body, EnvelopeMaker)

最初の2つの引数は入力で、ヘッダ・オブジェクトの配列(送信されたヘッダがなければ空)、1つのBodyオブジェクトです。そして3番目のオブジェクトは応答を送信することを許します。

どのように応答を送信するかはEnvelopeMakerをご覧ください(これはリクエストを送信するクライアントによって使われるのと同じクラスです。そのためそのやり方を知っていれば簡単にできるでしょう)

HeaderArray と Body は現在、単なるハッシュ・リファレンスです。しかし将来はblessされたオブジェクト・リファレンスになるでしょう。

このcall-dispatching(呼び出し−起動)機能をカスタマイズしたければ、OptionalDispatcher引数にコード・リファレンスを渡すことができます。

OptionalDispatcher 引数はディスパッチの動きを独自のコードで上書きすることができます。これは以下のようにしてサブルーチンを参照しなければいけません:


custom_dispatcher(RequestedClass, HeaderArray, Body, EnvelopeMaker)

sub my_dispatcher { my ($requested_class, $headers, $body, $em) = @_;

    # これはリクエストをメソッド呼び出しに変換する単純は例です
    # (しかしヘッダは何も扱いません)
    my $method_name = $body->{soap_typename};
    require $requested_class . '.pm';
    my $retval = $requested_class->$method_name(%$body);
    $em->set_body($body->{soap_typeuri}, $method_name . 'Response',
                  0, {return => $retval});
}

上記が要求されたクラスのクラスレベル・メソッドよ呼び出すことにより各リクエストを扱う例です。


依存するモジュール

SOAP::Defs SOAP::Parser SOAP::EnvelopeMaker


作者

Keith Brown


参考資料

SOAP::Transport::HTTP::EnvelopeMaker SOAP::Transport::HTTP::Apache


ホーム Perlの小技  SOAP

ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。