検索
連載

Webサービスの動作を決めるスコープの謎パソコンで試してわかるWebサービス(4)(4/4 ページ)

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

3つのスコープ

 Axisでは次の3つのスコープが用意されています。

スコープ名 配置記述子
記述名
動作
リクエスト request 1度のSOAP要求ごとにJavaBeansをインスタンス化する
セッション session Webサービス・クライアントごとにJavaBeansをインスタンス化する
アプリケーション application 1つのWebサービス実行環境(アプリケーション・サーバ)ごとにJavaBeansをインスタンス化する

 配置記述子ファイルにスコープを定義しない場合、デフォルト値として「request」が設定されます。すなわち、第3回の配置時にはWebサービスがrequestとして実行されていたために想定していた結果にならなかったことが分かります。

 今回はスコープを「application」に設定しました。アプリケーション・サーバが起動している間はずっと同じインスタンスが利用されます。そのために何回も実行すると前の結果が引き継がれていくことになります。

 これらの動作はServlet/JSPのスコープに大変よく似ています。もうお気付きだと思いますが、AxisはServlet上で実装されているためにスコープも同じ考え方になっています(Servlet/JSPのスコープについては、筆者の著書『まるごと図解 最新 サーバサイドJavaがわかる』(技術評論社)を参考にしてください)。

 とするならば、「session」スコープもServlet/JSPと同様の動作をするはずです。これは皆さんで試してみてください。おそらく想定していた結果にならないはずです。ということで、これを次回までの宿題にします。ヒントを参考に原因と解決策を検討してみてください。

 

ヒント

・ WebブラウザでServlet/JSPにアクセスしてセッションを保持するには何を利用しますか?

・ TCPモニタを見ると「request」「application」スコープのときと比べて何が異なりますか?

・ スコープの変更以外にもう1つ変更が必要です

 


今回のまとめ

 いくつかのテストでAxis上のWebサービスがどのような動作をしているか、ご理解いただけたと思います。このようにJavaBeansは同じものであっても、その使い方や設定によって動作が異なります。これはWebサービスに限らず、コンポーネント再利用の多くの場合にあてはまります。コンポーネントが同一のものだからといって、動作が必ず同じになるということはないということです。

 Javaのプログラムでは多くの場合、「インスタンス」を意識することが大変重要です。Javaはオブジェクト指向言語であり、「インスタンス = オブジェクト」としてJavaVM上でインスタンスがどのように振る舞っているかを理解し、立体的にオブジェクトをとらえることがJavaを理解する重要なポイントといえるでしょう。

 Axis上のWebサービスではスコープを設定することでJavaBeansの動作を変更することができます。この設定はJavaBeansをAxisに配置するための配置記述子に記述されます。裏を返せばこのスコープの概念はAxis独自のものであって、SOAPの仕様ではないということが分かります。

 また、スコープの設定はWebサービスのサーバ側の設定であって、クライアント側には知る方法がありません。今回もWebサービス・クライアントは変更していないにもかかわらず、動作が変わったことを理解していただけたと思います。

 Javaアプリケーションの実行の際には、JavaBeansを「new」するのはJavaアプリケーションの実装によりましたが、Webサービスのようなネットワークを介したリモート・プロシージャ・コールにおいてはクライアント側でインスタンス化のコントロールができない場合があります。これは、EJBのセッションBeanにおけるStatefull/Statelessにも似ているところがあります。このようにネットワークにおける分散プログラミングにおいては通常のプログラミング以外にも気を付けるべきところがあるということです。

 さて、次回は最初に今回の宿題の答え合わせをやります。その後、本題としてWeb Services Description Language(WSDL)を取り上げていきます。これまでWebサービスをマニュアル運転できましたが、WSDLを使うことでオートマ運転に近づけていきます。

 それでは、次回をお楽しみに。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る