Webサービスの処理
最近のソフトウェア開発では、SOAアーキテクチャの人気がますます高まっています。Webサービスは、SOAアーキテクチャを実装するための幅広く採用されている標準ベースのアプローチとして、標準のXMLベースのプロトコルを使った異機種システム間のやり取りを効果的に実現します。
WTPパッケージには、Apache Axis Webサービスライブラリに基づいて、Webサービスを処理するための非常に便利なツールが用意されています。これらのツールはWebサービスとWebサービスクライアントの両方に対応しています。
Webサービスの概念の中心に位置するのがWSDL(Web Services Description Language)です。これは、Webサービスによって提供されるサービスを厳密に記述するXML文書です。WTPには、WTP XMLエディタをベースとする、WSDL用の強力なグラフィックエディタが用意されています(図6)。前述のように、WSDLの知識が不要になるわけではありませんが、WSDLファイルの作成、編集、表示の作業は楽になります。
Webサービスクライアントの生成は簡単です。必要なのはサービスを定義するWSDLファイルだけです。新規のWebサービスクライアントを作成し([File]-[New]-[Other]-[Web Services]-[Web Service Client])、対応するWSDLファイルを提供します。
WSDLは、ローカルファイルとしてプロジェクト内で定義および管理することも、組織内または他の場所のWebサイト上で、一括管理して公開することもできます。Webサービスを呼び出すために必要なJava
クラス(サービスエンドポイントインターフェイス、サービスロケータクラス、サービスバインディングスタブなど)はすべてEclipseによって自動的に作成されます。
このアプローチは、商用サービスなど、非常に安定したWebサービスを処理する場合に有効です。Webサービスを内部で、クライアントと同じプロジェクトの一部として開発している場合は、ビルドプロセスの一部にWebサービスクライアントの生成を含めるなど、もっとダイナミックなアプローチが必要かもしれません。
WTPは、ユーザー独自のWebサービスの作成、デプロイ、テストもサポートしています。Webサービスを作成するための2つのアプローチとしては一般に、ボトムアップアプローチとトップダウンアプローチが知られています。
ボトムアップアプローチでは、最初にビジネスロジックを実装するJava
クラスを作成し、Eclipseによって自動的にWSDLファイル、および関連するクラスを生成し、このビジネスロジックをWebサービスとして公開します。トップダウンアプローチでは、最初にWebサービスを(WSDLファイル、および対応するSMLスキーマの形式で)定義し、対応するJavaビジネスクラススケルトンを生成します。
どちらのアプローチに対しても、WTPはWebサービスの開発作業を簡便化する強力な機能を提供します。Eclipseを通して、Webサーバーの起動、サーバーへのWebサービスのデプロイとテスト、およびWebサービスとそのクライアントの間でやり取りされるSOAPメッセージのモニタを実行できます。
Webサービスを短期間で開発して実行するには、ボトムアップアプローチを使うのが一番簡単です。[Web Service]ダイアログ([File]-[New]-[Other]-[Web Services]-[Web Service])を開き、ボトムアップアプローチを選択します(図7)。次に、公開するビジネスクラスを指定します。公開するメソッドの指定が求められ、Eclipseによって対応するWSDLファイルが自動的に生成されます。必要に応じて、指定したローカルアプリケーションサーバーを起動し、そのサーバーにWebサービスをデプロイすることもできます。
一方、トップダウンアプローチでWebサービスを作成する場合の最初のステップは、WSDLファイルを指定することです。[Web Service]ダイアログ([File]-[New]-[Other]-[Web Services]-[Web Service])を開き、WSDLファイルの場所を指定します。クライアントと同様、WSDLファイルは、ローカルファイルでもリモートサーバー上のファイルでも構いません。
次に、Eclipseによって実装スケルトンクラスと、その他の複数の下位クラスが自動的に生成されます。実装クラスには、提供する必要がある空のビジネスメソッドが含まれます。それ以外の基本的な詳細はすべて、その他の生成されたクラスに既にコーディングされているので、ユーザーはビジネスロジックの作成に専念できます。
このアプローチは、外部で定義されているWSDLを使う場合に適しています。WSDLファイルをローカルに残しておけば、使っている正確なデータ構造を適切に制御することもでき、それにより、例えば、.NETのWebサービスクライアントを処理する場合の微妙な相互運用性問題を回避できます。このアプローチの欠点は、WSDLファイルの理解、作成、維持にかかわる時間が増えることです。
Webサーバーの構成
J2EEアプリケーションを(またはその一部だけでも)作成し終えると、実際のサーバーでどのように実行するかを確認したい気持ちになります。
WTPは、数多くのオープンソースのアプリケーションサーバー、および市販のアプリケーションサーバーをデフォルトでサポートするように作られています。現時点では、Jakarta Tomcatサーブレットコンテナから、JBoss、JOnAS、Geronimoなどの本格的なオープンソースのJ2EEアプリケーションサーバーや、BEA WebLogic、IBM WebSphereなどの市販のアプリケーションサーバーまで、15のアプリケーションサーバーをサポートしています。
新規のサーバー定義を追加するには、Eclipseの[Preferences]画面で[Server]-[Installed Runtimes]と選択して表示されるウィンドウを使います(図8)。ここで、JREと、アプリケーションサーバーのインストールディレクトリを指定します(必要に応じて、アプリケーションサーバーごとに異なるJREを使うことができます)。
サーバーを構成し終えると、そのサーバーをプロジェクトプロパティでプロジェクトのデフォルトサーバーとして設定するか、Eclipse内からアプリケーションを実行するときに明示的に選択することができます。
Webアプリケーションのテストとデバッグ
サーバーを正しく構成し終えたら、[Run As]-[Run on Server]と選択して、Eclipse内からアプリケーションを直接実行できます。Eclipseによってアプリケーションサーバーが起動され、アプリケーションがデプロイされて、EclipseのコンソールとEclipse IDE内のアプリケーションWebページにログメッセージが表示されます。
また、[Debug As]-[Debug on Server]と選択して、Webアプリケーションを非常に簡単にデバッグすることもできます。この場合、アプリケーションはデバッグパースペクティブで実行されます。このパースペクティブでは、通常のクラスと同じように、JSPページにブレークポイントが挿入され、変数のチェックが行われて、ページ生成プロセスに進みます。
おわりに:Eclipseで行うWeb開発
WTPツールセットは、EclipseがWeb開発の分野に踏み出した大きな一歩です。
WTP以前にも、さまざまなサードパーティ製プラグインがそれぞれに多彩な機能を提供していましたが、品質や信頼性のレベルにばらつきがありました。しかし、WTPプロジェクトによって、これらの機能が、一貫性があり、信頼性が高く、適切に統合された1つのグループにまとめられ、標準のEclipseシステムで簡単に利用できるようになりました。
公平に言えば、Exadel Studio Pro、BEA Workshop、MyEclipseなど、他にもEclipse向けの同様のプロダクトはあります。実際、これらのプロダクトは、WTPをベースに作成されたものであり、WTPの機能に加えて、JSPの高度なサポートや、その他のオープンソースプロジェクト(Spring、Hibernateなど)のサポートを提供しています。
いずれにせよ、EclipseでJava Webアプリケーションを開発するときには、WTPの機能を理解すればかなりのメリットがあります。ぜひ試してみてください。