早速JavaBeansのWebサービス化を始めましょう。まずは、Webサービス・プロバイダの作業です。
何度も解説してきましたが、JavaBeans版WebサービスはServletアプリケーションです。J2EE的にいえば「Webコンテナで稼働するJ2EEアプリケーション」ということになります。WSADではそのままJ2EEアプリケーションとして開発を進めることになります。
最初に、J2EEアプリケーションを開発するプロジェクトを作成します。
(1)「J2EEパースペクティブ」を選択します
(2)「J2EEナビゲーター」を選択します
(3)「ファイル」−「新規」−「Webプロジェクト」を選択します
Webプロジェクトのウィザードが起動したら次に進みましょう。この画面では「Webコンテナアプリケーション用プロジェクト」を作成しています。
(4)プロジェクト名に「JavaBeansWebServiceWeb」と入力し、「次へ」ボタンを押します
Webプロジェクトは、必ずJ2EEプロジェクト(エンタープライズ・アプリケーション・プロジェクト)が必要です。次の画面では、この「J2EEアプリケーション用プロジェクト」を作成します。
(5)新規プロジェクト名に「JavaBeansWebService」と入力し、「終了」ボタンを押します
これでプロジェクト作成は終了です。次の図のように2つのプロジェクトができていればOKです。
今回の開発においてはJ2EEアプリケーションを少し意識して開発を進める必要があります。この部分は開発者にとって多少面倒であり、不自由を感じるところでもあります。そのため、少しだけJ2EEアプリケーションのパッケージについて解説しておきます。
J2EEでは、最終的に「EARファイル」というパッケージ形式でアプリケーション・サーバに配置(Deploy)します。このEARファイルには、Webアプリケーション・パッケージの「WARファイル」やEJBパッケージの「EJB-JAR」などが含まれます。個々のクラスファイルや定義用XMLファイルなどはWARファイルやEJB-JARファイルの中に含まれています。
前の図において「JavaBeansWebService」と「JavaBeansWebServiceWeb」は並列に表示されています。しかし、実際にはJ2EEパッケージ用プロジェクト(エンタープライズ・アプリケーション・プロジェクト)である「JavaBeansWebService」の中にWebアプリケーション用プロジェクトである「JavaBeansWebServiceWeb」が含まれています。これを確認するには左側ツールバーの「J2EEパースペクティブ」ボタンを押して、「J2EE階層」を開いてみてください。
「エンタープライズ・アプリケーション」の中に「JavaBeansWebService」が含まれています。それをさらに開いていくとWebアプリケーションの「JavaBeansWebServiceWeb.war」が含まれています。すなわち最終的にアプリケーション・サーバへ配置するときはJ2EEプロジェクトである「JavaBeansWebService」のみを持っていけばいいことが分かります。
さて、話を戻して先に進みましょう。今回は第7回まで利用してきたJavaBeansをそのまま使います。すでにプログラムがある場合はそれをインポートすればいいのですが、今回は新規にJavaBeansを作ってみます。
(1)左のツールバーから「Webパースペクティブ」を選択します
(2)「JavaBeansWebServiceWeb」から「Java Source」を選んで、マウスで右クリックして「新規」−「クラス」を選択します
ここで、新規クラスを作成するウィザードが起動します。
(3)パッケージに「atmarkit」、名前に「SimpleAddBean」と入れて「終了」ボタンを押します
ここで、Javaクラスのソースコード・エディタが出てきます。さて、ここで統合開発環境の便利な機能を使ってみます(ちょっと寄り道です)。
SimpleAddBean.java(第3回参照)では2つのインスタンス変数をprivateで宣言し、そのアクセッサ(Setter/Getter)を作りました。統合開発環境ではこのような部分は自動的に作ることができます。
(4)まず、2つのインスタンス変数をクラス内に記述します
private int resultValue; private int inputValue;
(5)エディタ上の適当なところでマウスの右クリックをし、「ソース」「GetterおよびSetterの生成」を選択します
(6)Getter/Setterを作成したい変数を選択し、OKを押します
これで、アクセッサが自動作成されました。ソースコードが自動的に追加されているのが確認できましたか?
あとは、下記の部分(コンストラクタとaddメソッド)を追加するだけです。
public SimpleAddBean(){ resultValue = 0; inputValue = 0; System.out.println("SimpleAddBeanがインスタンス化されました!"); } public void add() { resultValue = resultValue + inputValue; }
ソースコードがすべて記述できたら、保存(Ctrl+S)してください。エラーは表示されていませんか? エラーがある場合は、エラー行に赤いエラーマークが付いて、下部の「タスク」にその内容が表示されます。これでJavaBeansが用意できました。ソースコードが書けたら次はテストです。
第3回「JavaBeansからWebサービスを作る」でJavaBeansを作成した際には、テスト用Javaアプリケーション(SimpleAddTest.java)を作ってJavaBeansをテストしました。WSADでも、同じようにJavaアプリケーションを作成して実行することも可能ですが、それではあまり統合開発環境の意味がありません。
WSADでは、主に次のような単体テスト方法が可能です。
ここでは、1の汎用テスト・クライアントを利用してみます。J2EEナビゲーター内の「SimpleAddBean.java」にてマウスの右クリックをして、「汎用テスト・クライアントを起動」を選択します。初めて実行する場合は少し時間がかかりますが、しばらくするとWSAD内にWebブラウザが起動され、次のようなツールが起動します。
この汎用テスト・クライアントの動作は、この後多くの場面で出てきますので、ここでは少し詳しく説明していきましょう。基本的には第3回のテスト用Javaアプリケーションのソースコードに書き込んだ手順と同じ操作をこの汎用テスト・クライアントに向かってやることになります。
テストするJavaBeansはすでにインスタンス化され、「オブジェクト参照」の中に「SimpleAddBean@xxxx」として現れています。これは、Javaアプリケーションでは「new」を使ってインスタンス化することに相当します。
このインスタンスをさらに開くとメソッドが現れます。メソッドの操作は次のように行います。まず、実行するメソッドをクリックします。右側のウィンドウに「パラメーター」が現れます。この「値」にメソッドの引数を設定し、「起動」を押します。実行した結果は最下部に表示されます。
上述の操作が1つのメソッドを実行する手順になります。これをテスト用Javaアプリケーション(第3回)のように実行していくことで、JavaBeansをテストすることができます。
この汎用テスト・クライアントですが、Webブラウザで表示されています。このプログラムはアプリケーション・サーバ上で起動しています。汎用テスト・クライアントの下のウィンドウの「サーバー」タブを開いてみてください。「WebSphere v5.0テスト環境」が稼働していることが分かります。JavaBeansのテストが終了したら、このサーバを停止しておくといいでしょう。開始しているサーバを右クリックして「停止」を選択することでアプリケーション・サーバが停止します。また後ほど実行することがありますので、ここでは、一度停止しておいてください。また、汎用テスト・クライアントが表示されているWebブラウザも閉じておいてください。
この汎用テスト・クライアントでは、単体テストは開発者が毎回操作をする必要があります。何度もJavaBeansを変更し何度もテストを行う場合は、このテスト方法では面倒です。このような場合は、「JUnitによる自動テスト」を実施します。
Copyright © ITmedia, Inc. All Rights Reserved.