スコープを意識しないWebサービス
Webサービスにおいてスコープを意識しなくてもいいような作り方をすることも可能です。ここでは考え方だけを紹介しておきましょう。
今回のJavaBeansでは6回のメソッドを呼び出すことで1つの処理を行っています。このような1つの処理単位を「Unit of Work(UOW)」といいますが、このUOWを1つのメソッドで実装してしまうことでセッション管理を意識しなくてよくなります。
いうなれば、第3回「JavaBeansからWebサービスを作る」のJavaアプリケーションのプログラムを単なるクラスにして、それをWebサービスとして配置すればいいはずです。第3回のJavaアプリケーションのmainメソッドの中だけを実装したメソッド(ここでは、UOWメソッドと表現します)を持ったJavaBeans(図中のUOWBean)を作成します。WebサービスはこのUOWメソッドを1回だけ呼び出すことで、実行すべきJavaBeansにおける6つのメソッドを実行したことになります。
このように設計することで、Axis上ではスコープの違いにより結果が異なることはなくなります。
しかし、アプリケーションとしてスコープを意識しなくなったとしても、「システム・リソース」の面からどのスコープを利用するかの検討が必要です。この形になった場合、どのスコープを選んでも実行結果は同様ですが、JavaVM上でインスタンス化されるJavaBeansの数は異なります。動作に違いがなければ「より広いスコープ」を選ぶことでインスタンスの数を減らすことが可能です。この例の場合であれば、「applicationスコープ」にすることでインスタンスは1つになり、リソースを効率よく利用することができるはずです。ということで、このUOWBeanは読者の皆さんで試してみてください。
まとめ
スコープについては十分理解できましたでしょうか? 前回と今回の2回にわたってスコープをじっくりと解説してきました。この2回で説明したのは単なるスコープの動きだけではなく、SOAPがWebサービスとWebサービス・クライアントの間でどのようにやりとりされているかを理解してもらえるようにさまざまな解析を行いました。これらの実験でSOAPの動きが手に取るように分かったと思います。
また、Webサービス自身、これまでに作り上げられてきたさまざまな技術を応用していることも理解できたと思います。Cookieは当初WebサーバとWebブラウザの間でセッションをいかにうまく保持するかを実現するために作られたものです。それをWebサービスにおいても「再利用」することでうまくセッション管理を実現しています。このようにWebサービス自身、決して新しい技術で作られているのではなく、過去に実績のある技術の上に作られているともいえます。
さて、この連載もいよいよ後半戦に入ります。次回はWebサービスを「自動運転」するための第1歩として「WSDL」に話を移していきます。この第5回までは、Webサービスを「マニュアル運転」してきました。WebサービスもWebサービス・クライアントもプログラムを一生懸命書いてきたはずです。これをせめて「オートマ運転」くらいにはしていきたいと思います。
それでは、次回をお楽しみに。
Copyright © ITmedia, Inc. All Rights Reserved.