検索
連載

EJBからWebサービスをつくるパソコンで試してわかるWebサービス(9)(4/4 ページ)

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

EJBのWebサービス化

 さて、EJBをWebサービス化する場合にも統合開発環境の恩恵を受けることができます。JavaBeansのときと同じような操作になりますが、少し違うところもありますので、順を追って解説していきましょう。

 「J2EE階層」から「EJBモジュール」−「EJBWebServiceEJB」の豆アイコンの「SimpleAddEJB」を選択し、マウス右クリックから「Webサービス」−「Webサービスとしてデプロイ」を選択します。

(クリックすると拡大します)
(クリックすると拡大します)

 ここで、Webサービスのウィザードが起動します。このウィザードはJavaBeansのWebサービス化とほとんど同じです。違うところを見てみましょう。

 まず、次の画面は同じです。「デフォルトの使用」でOKです。「次へ」ボタンを押します。

(クリックすると拡大します)
(クリックすると拡大します)

 次の「EJBの構成」はEJBを設定します。この画面はJavaBeansとは異なりますが、EJBアイコンからウィザードを起動したため、すでに記入されています。そのまま「次へ」ボタンを押します。

(クリックすると拡大します)
(クリックすると拡大します)

 次の画面ではWSDLなどを設定しますが、これもこのままでOKです。「次へ」ボタンを押します。

 1カ所JavaBeansと異なるところがあることに気付きましたか?「有効範囲」という項目が変更できなくなっています。EJBのWebサービスでは、この「有効範囲」が変更できなくなっていますが、なぜでしょうか? これについては後で取り上げることにしましょう。

(クリックすると拡大します)
(クリックすると拡大します)

 次の画面では、Webサービスとして公開するメソッドを選択します。EJBを作った手順を思い出してください。ここに表示されているのは、リモート・インターフェイスに記述したメソッドであることが分かります。これでウィザードは終了です。「終了」ボタンを押します。

(クリックすると拡大します)
(クリックすると拡大します)

 これで、Webサービス化が完了です。

Webサービス・クライアントの作成とテスト実行

 この部分は、まったく同じ手順のため、前回の「WSDLからWebサービス・クライアントを作る」を読んで同じ手順でWSDLからWebサービス・クライアントを作成してください。

 Webサービス・クライアント作成のウィザードが終わると、テスト環境が起動します。前回も解説したように、テスト環境を実行する際に、最初にWebサービスのURLを設定します。まず、「setEndPoint」を選択し、下記のURLを設定(Invoke)します。

http://localhost:9080/EJBWebServiceWeb/servlet/rpcrouter


Webサービスのテスト(クリックすると拡大します)
Webサービスのテスト(クリックすると拡大します)

 この後の操作は、EJBテストともJavaBeans版Webサービスとも同じです。試してみてください。

 EJB版Webサービスの場合も、WSDLファイルからWebサービス・クライアントを作成するのはJavaBeansの場合とまったく同じです。Webサービス化してしまうと、後の操作が同じになることがWebサービス化の大変大きな特徴であり、メリットであることを理解できますか? Webサービス・リクエスターにしてみれば、Webサービスの実体がJavaBeansだろうとEJBだろうと関係ないことを意味するのです。

スコープを確認する

 JavaBeans版Webサービスのときと同じように、EJB版Webサービスにおいてもスコープを確認しましょう。dds.xmlファイルを開くと次のようになります。スコープ(scope)が「Application」になっていることが確認できます。

スコープ(scope)が「Application」になっている(クリックすると拡大します)
スコープ(scope)が「Application」になっている(クリックすると拡大します)

 このスコープは「Request」「Session」「Application」を取ることができました。変更して、試してみてください。JavaBeans版Webサービスでは「Request」にすると動きが変わりましたが、EJBではどうでしょうか?

 試すと分かりますが、EJB版Webサービスでは、スコープを変えても動作は変わりません。なぜでしょうか?

 EJB版Webサービスでは、「Application」しか有効ではありません。EJBをWebサービス化するウィザードで「有効範囲」が「アプリケーション」しか選択できなくなっていたことを思い出してください。

 これは、EJB、特に今回のEJBで利用した、「ステートレス・セッションBean」の特徴でもあります。「ステートレス・セッションBean」では、多くの場合EJBコンテナ上にはEJBインスタンスが1つしか存在しません。すなわちEJBは、JavaBeansのようにスコープを変更することで、インスタンスが複数作成されることはありません。これは、複数のEJBクライアントが同一のステートレス・セッションBeanにアクセスすることになるためです。

 これによりApplicationスコープしか意味がなくなり、あえてデザイン・パターン的にえば「シングルトンのような動作」になっているといえます(実際にはもう少し複雑な動きをしていますので、それについてはステートレス・セッションEJBの仕様を確認していただければと思います)。

JavaBeansとEJBのWebサービス化でわかったこと

 JavaBeansとEJBのWebサービス化は、統合開発環境を利用することで同じような手順になることが理解できたと思います。EJBだけでもハードルが高いのにさらにWebサービス化ともなると大変だと思われていた方もいらっしゃったでしょうが、統合開発環境を利用することでJavaBeansと同じように作成できました。

 では、実際の開発では、JavaBeansとEJBのどちらで作ればいいのでしょうか?

 それは、JavaBeansとEJBのメリットがどこにあるかを理解することが必要です。最初にJavaBeansとEJBの違いを簡単に解説しましたが、実際にはさらに細かい違いがあります。そしてそれぞれメリットとデメリットを持っています。そして、利用する場面に応じてどちらが効果的に利用できるかを判断する必要があります。

 さらに、Webサービス化となれば、Webサービス化における違いも考慮する必要があります。スコープの部分は、その最も気を付けるべき部分です。JavaBeansではスコープを変更することでさまざまな応用が可能ですが、EJBでは1つのスコープしか持てません。そのため、EJBではシステム化要件を満たさない可能性があります。

 このような場合、JavaBeansでWebサービスの種を作ることも選択できますが、場合によっては、EJBで作って、それにアクセスするためのEJBアクセス用JavaBeansを作って、そのJavaBeansをWebサービス化することで実現することも考えられます。このようにJavaBeansとEJBを組み合わせて使うことでさらに応用が広がりますので、今後、このような場面に出くわしたときには、これまでの連載を思い出して最適な判断をしてください。

 JavaBeansとEJB、どちらの場合でも変わらないところがあります。それは、Webサービス化したことで、Webサービス・クライアントからは、「同じインターフェイス」に見え、同じように利用できることです。Webサービス・クライアントには、Webサービスの中身がJavaBeansだろうがEJBだろうが違いはありません。

 このように、Webサービスはさまざまな異なる「コンポーネント」を「サービス」という汎用的なものに見立ててインテグレートしてしまいます。これは、JavaBeansやEJBだけでなく、ほかのさまざまなコンポーネントも対象です。これこそWebサービスのだいご味であり、Webサービス化する最大のメリットといえます。

Webサービスはさまざまな異なる「コンポーネント」を「サービス」という汎用的なものに見立ててインテグレートできるのがメリット
Webサービスはさまざまな異なる「コンポーネント」を「サービス」という汎用的なものに見立ててインテグレートできるのがメリット

 この特徴を生かしてこそWebサービスの価値が出てくると思われますし、今後間違いなくこの特徴を利用したコンピュータ・システム、いや、コンピュータ・サービスが現れてくることでしょう。

おわりに

 この「パソコンで試してわかるWebサービス」では9回にわたって7つのステップによりWebサービスの基本を解説してきました。

 長い連載の間に、Webサービスの環境はどんどん進化し、Webサービスに関する新しい規格や新しい団体、既存規格のバージョンアップなどさまざまな話題がありました。2002年8月に連載を始めた当初Axisは1.0Beta3でしたが、数回のバージョンアップがあり2003年6月にはAxis 1.1が公開されました。このスピード感にこそ、Webサービスが大変ホットな技術であることが表れていると思います。

 しかし、この連載で取り上げた内容は大変基本的な部分の話であるため、現時点でもあまり変わっていませんし、SOAPやWSDLなどは今後もWebサービスの基本技術であることには変わりはありません。

 最後に次につながる話をして、この連載を終わることにしましょう。Webサービスの作成方法には、大きく2つの方法があります。

 1つは「コンポーネント(JavaBeans、EJBなど)から作り出す方法」であり、「ボトムアップ・アプローチ」といいます。最初にコンポーネントを作るか、もしくは既存のコンポーネントを基にWebサービス化していく方法です。

 もう1つは作り始めるところが異なり、「WSDLを先に作成し、そこからWebサービス・クライアントとWebサービスの両方を作り出す方法」です。これを「トップダウン・アプローチ」といいます。クライアントをWSDLから作り出すことはこれまでもやってきましたが、実はWSDLからWebサービス・プロバイダ側のWebサービスも作成することができます。

Webサービス作成の2つのアプローチ
Webサービス作成の2つのアプローチ

 今回の連載では、ボトムアップ・アプローチをやってきたことになります。そこで、トップダウン・アプローチは読者の皆さんでぜひAxisのマニュアルなどを読んでトライしてみてください。AxisのWSDL2Javaコマンドには、このトップダウン・アプローチ用の機能が用意されていますし、統合開発環境でもトップダウン・アプローチが可能です。

 今度は皆さん自身で「パソコンで試してわかるWebサービス 〜トップダウン・アプローチ編〜」をやってみてください!

 それではまたどこかでお会いしましょう。

Copyright © ITmedia, Inc. All Rights Reserved.

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