
第9回 EJBからWebサービスをつくる
| EJBのWebサービス化 |
さて、EJBをWebサービス化する場合にも統合開発環境の恩恵を受けることができます。JavaBeansのときと同じような操作になりますが、少し違うところもありますので、順を追って解説していきましょう。
これで、Webサービス化が完了です。
| Webサービス・クライアントの作成とテスト実行 |
この部分は、まったく同じ手順のため、前回の「WSDLからWebサービス・クライアントを作る」を読んで同じ手順でWSDLからWebサービス・クライアントを作成してください。
Webサービス・クライアント作成のウィザードが終わると、テスト環境が起動します。前回も解説したように、テスト環境を実行する際に、最初にWebサービスのURLを設定します。まず、「setEndPoint」を選択し、下記のURLを設定(Invoke)します。
|
![]() |
| 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」になっている(クリックすると拡大します) |
このスコープは「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サービス」では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つのアプローチ |
今回の連載では、ボトムアップ・アプローチをやってきたことになります。そこで、トップダウン・アプローチは読者の皆さんでぜひAxisのマニュアルなどを読んでトライしてみてください。AxisのWSDL2Javaコマンドには、このトップダウン・アプローチ用の機能が用意されていますし、統合開発環境でもトップダウン・アプローチが可能です。
今度は皆さん自身で「パソコンで試してわかるWebサービス 〜トップダウン・アプローチ編〜」をやってみてください!
それではまたどこかでお会いしましょう。
| 4/4 |
|
INDEX |
||
| 第9回 EJBからWebサービスをつくる | ||
| Page1 今回の目的は「EJBをWebサービス化する」 |
||
| Page2 JavaBeansとEJBの違い EJBのWebサービス化の流れ 開発環境の準備 |
||
| Page3 エンタープライズ・プロジェクトの作成 EJBの作成(ひな型作成) EJBの作成(ビジネスロジック記述) EJBの配置(Deploy) EJBのテスト |
||
| Page4 EJBのWebサービス化 Webサービス・クライアントの作成とテスト実行 スコープを確認する JavaBeansとEJBのWebサービス化で分かったこと おわりに |
||
| Java Solution全記事一覧 |
TechTargetジャパン
- Scalaのパッケージ、アクセス修飾子、オブジェクト継承 (2012/5/22)
インポート、パッケージオブジェクト、抽象クラス/抽象メソッド、オーバーライド、final、シールドクラスなども - 基幹系システムでCloud SQLは使えるか試してみた (2012/5/17)
サンプルとしてMRPシステムを作成して動かし、「再帰呼び出し」などのパフォーマンスを測定して検証してみます - アジャイル管理ツール9選+Pivotal Tracker入門 (2012/5/14)
群雄割拠のアジャイルプロジェクト管理ツールを9つ紹介し、特に注目を集めているPivotal Trackerの基本的な使い方を解説します - サーバサイドJSやJavaでWebアプリが作れるXPages (2012/5/11)
Notes/Dominoの資産をサーバサイドJavaScriptやJavaで操作し、HTMLやJavaScript、CSSをUIにできる技術を紹介
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -









