このチュートリアルでは4種類のWebサービス(POJOアノテーション・ドリブン・サービス、宣言型POJOサービス、既存のWSDL向けサービス、EJBサービス)を作成します。これらのシナリオの目的は、Java EE Webサービスのデモンストレーションとテストを行うことにあります。具体的には、JAX-WS(Java API for XML Web Services)とアノテーションの処理を行います。JAX-WSを使用することで、別々のXMLデプロイメント・ディスクリプタを使用することなく、Javaソースに直接アノテーションを入力できます。
チュートリアルの最後に、作成したWebサービスを使用するADFクライアント・アプリケーションを作成します。
-
起動用ラボ・ファイルをダウンロードし、一時フォルダ(d:\Tempなど)にWebService.zipファイルを保存します。
-
WinZipなどのzipユーティリティを使用して、任意のフォルダにWebService.zipを解凍します。このチュートリアルでは、C:\JDeveloper\myworkフォルダを使用しました。
-
「スタート」→「すべてのプログラム」→「JDEVELOPER_HOME」→「OracleHome」→「Oracle JDeveloper Studio」→「Oracle JDeveloper Studio」を選択して、JDeveloperを起動します。
以前のバージョンのJDeveloperからプリファレンスをインポートするかどうかを確認するダイアログ・ボックスが開いたら、「NO」をクリックします。
-
ロールを設定するよう指示されたら、「Studio Developer」を選択します。
-
Tip of the Dayウィンドウが表示されたら、「Close」をクリックします。
-
JDeveloper IDEが表示されます。Start Pageタブにマウスを合わせて「X」をクリックし、このタブを閉じます。
-
「Application」ウィンドウを選択し、「Open Application」をクリックします(または、「File」→「Open」を選択します)。
-
Open Applicationダイアログ・ボックスで、WebService.zipファイルを解凍したWebサービス用フォルダに移動し、「WebService.jws」を選択します。
-
「Open」をクリックします。
-
アプリケーションを移行するよう指示されたら「Yes」をクリックします。
Applicationsウィンドウは、次のように表示されます。
ここではPlain Old Javaクラスを含むプロジェクトに、Webサービスとして公開するアノテーション付きメソッドを追加します。
-
Applicationsウィンドウで、「Annotation」プロジェクト・ノードを開き、POJOクラスを表示します。
-
Dept.javaは部門構造を表しています。
-
Emp.javaは従業員構造を表しています。
-
MyCompany.javaは、部門と従業員に関する情報を挿入します。
-
-
Applicationsウィンドウで、「MyCompany.java」をダブルクリックして編集します。
-
インポート文の後ろに@WebServiceアノテーションを追加します。WebServiceクラスに対するimportを選択するよう指示するプロンプトが表示されます。ポップアップから「javax.jws.WebService」を選択します。このアノテーションは、Webサービスで使用されるメソッドがクラスに含まれることを表します。
-
余白でクイック・ヒント(電球マーク)をクリックし、「Configure project for web services」オプションを選択します。
-
Select Deployment Platformダイアログ・ボックスで、Java EE 6, with support for JAX-WS Annotationsが選択されていることを確認します。
-
「OK」をクリックします。このステップでは、javax.jws.WebServiceのインポート文をJavaクラスに追加し(まだ追加されていない場合)、web.xmlファイルを作成します。
Applicationsウィンドウは、次のように表示されます。
MyCompany.javaクラスのアイコンがWebServiceクラスを表すように変更され、web.xmlファイルがプロジェクトに追加されていることを確認します。
-
「」Save Allをクリックして作業内容を保存します。
-
コード・エディタでクラス下部までスクロールし、次のコード文を追加します。
public Dept getDeptInfo (int id) {
for (Dept a: this. getMyDepts() ) {
if (a.getId() == id) {
return a;
}
}
return null;
}
このループは、特定の部門で働いているすべての従業員に関する情報を返します。
ウィンドウ内のコードは次のように表示されます。 -
getDeptInfo()メソッドの前に2番目のアノテーションを作成します。このアノテーションは、メソッドがWebサービスから公開されることを表します。getDeptInfo()メソッドの上に空白行を追加し、@WebMethodと入力します。コード・インサイトが開き、使用可能な構文のリストが表示されます。構文のリストから「WebMethod」を選択します。
-
推奨リストが表示されたら、[Alt]を押しながら[Enter]を押して、import javax.jws.WebMethod;文を追加します(この文は自動的に追加される場合もあります)。
クラスは、次のように表示されます。
-
「」Save Allをクリックして作業内容を保存します。
-
Propertiesウィンドウを使用して、クラスの特性を変更できます。メニュー・バーから「Window」→「Properties」を選択すると、IDEの画面下部にタブが表示されます。注:PropertiesウィンドウがIDEの別の部分に表示される場合、必要に応じてタブをドラッグして下部のパネルにドロップできます。
-
PropertiesウィンドウでMyCompanyクラスのプロパティを表示するには、Structureウィンドウの下部の「Source」タブを選択し、最上位レベルの「MyCompany」クラス名を選択します。
-
Propertiesウィンドウに、展開可能なノードがいくつか表示されます。「JAX-WS」ノードを開くと、Service Nameのクラス名に'Service'が付加されていることがわかります。
-
Service NameをMyCompanyWSに変更します。名前の変更がクラスに反映されたことを確認します。
-
「」Save Allをクリックして作業内容を保存します。
以上で、POJO Webサービスの作成が完了しました。次の項では、Webサービスのテストを行います。
この項では、HTTP Analyzerを使用してWebサービスのコンパイル、デプロイ、テストを行います。 JDeveloperには、HTTP Analyzerと呼ばれるWebサービスのテスト・メカニズムが含まれています。HTTP Analyzerを使用してWebサービスをテストする場合、JDeveloperによってサービスがコンパイルされ、統合Webサーバーにデプロイされます。次にアナライザが起動され、Webサービスに対する値の送受信が可能になります。
-
Webサービスをテストする前に、Webブラウザの設定が正しいことを確認します。「Tools」→「Preferences」を選択し、左側のリストを下方向にスクロールして「Web Browser and Proxy」ページを選択します。Proxy SettingsタブでNo Proxyが選択されていることを確認し、「OK」をクリックします。
-
Applicationsウィンドウで「MyCompany.java」ノードを右クリックし、コンテキスト・メニューから「Test Web Service」を選択します。
これにより、統合WebLogicサーバーの起動とサービスのデプロイが行われ、アナライザが開始されます。WebLogicサーバーを初めて実行する場合、開始に数秒かかる場合があります。初めてサービスをテストする場合、コンテンツの表示をブロックするかどうか確認を求められることがあります。その場合は、コンテンツの表示を許可します。 -
HTTP Analyzerエディタ・ウィンドウの上部にはWebサービスのURL、WSDL URL、および公開される操作が表示されます。リストから「MyCompanyPort.getDeptInfo(,)」操作を選択します。
アナライザの下部は、リクエストとレスポンスの2つの領域に分かれています。リクエスト領域には、公開されるメソッドのすべての引数(ここでは1つのみ)が表示されています。Webサービスを実行すると、レスポンス領域に結果が表示されます。
-
リクエスト領域で、arg0フィールドに部門番号(10、20、または30)を入力します。
-
アナライザのツールバー領域で「Send Request」をクリックします。または、引数の下の「」Send Requestボタンをクリックします。
-
アナライザによりサービスにリクエストが送信され、数秒後に、指定した部門で働いている従業員に関する情報が返されます。
-
エディタ下部の「HTTP Content」タブをクリックして、XMLコードを表示します。
-
エディタ下部の「Raw Message」タブをクリックして、コードを別の方法で表示します。
-
エディタ下部の「SOAP Structure」タブをクリックし、HTTP Analyzer上部で「WSDL URL」リンクをクリックします。
-
これにより、Webサービスのビジュアル・エディタが開きます。Port Typesパネルで「getDeptInfo」→「output」→「getDeptInfoResponse」ノードを開きます。
-
Port Typesパネルの左側で、Messagesの上にある小さなプラス記号をクリックし、メッセージのコンテンツを表示します。
選択したメッセージのフローが新たにグラフィカル表示されます。
-
エディタ・ウィンドウの任意のタブを右クリックして、「Close All」オプションを選択します。
-
Applicationsウィンドウで「Annotation」プロジェクト・ノードを閉じます。