Comments
Description
Transcript
2.1. Webサービス
WebOTX アプリケーション開発ガイド WebOTX アプリケーション開発ガイド バージョン: 7.1 版数: 第 5 版 リリース: 2008 年 11 月 Copyright (C) 1998 - 2008 NEC Corporation. All rights reserved. 2-1-1 目次 2. J2EE共通................................................................................................................................. 3 2.1. Webサービス..................................................................................................................................... 3 2.1.1. Javaアプリケーションを作成する...................................................................................................................3 2.1.2. Webサービスを作成する...............................................................................................................................6 2.1.3. Webサービスをテスト用サーバに配備する ..................................................................................................11 2.1.4. Webサービスをテストする ...........................................................................................................................13 2.1.5. チュートリアル関連サンプルのご紹介 .........................................................................................................14 2-1-2 2.J2EE 共通 本章は、WebOTX Developer を利用したアプリケーション開発についての概要を説明したチュートリアル と、マニュアルに添付したサンプルの紹介で構成されています。はじめてアプリケーションを開発する際 にお役立てください。 本章では、WebOTX Developer に付属しているテスト用サーバに対する操作を説明していま す。テスト用サーバは Standard-J Edition に相当する機能を提供しています。しかし、 Standard Edition/Enterprise Edition では、アプリケーショングループやプロセスグループが あるため、配備の操作が異なる部分があります。そのため、配備については運用編もご参 照ください。 2.1.Web サービス WebOTX Developer を使うと、様々なビジネスロジックを簡単に Web サービス化することができます。ここ では、WebOTX Developer を使ってシンプルな Web サービスを作成し、開発の手順や WebOTX Developer の操作を実際に体験していただきます。まずは、最初から説明の通りに操作して、開発の流れを理解し てください。 ここで紹介している方法で Web サービスをテストするには、WebOTX 開発環境のインストー ル時に「テスト用サーバ」も選択してインストールしておく必要があります。 2.1.1.Java アプリケーションを作成する まず初めに、Web サービス化するビジネスロジックを作成します。ここでは、あとの説明のために新規に ビジネスロジックを作成しますが、実際に Web サービスを作成する時は、既存のビジネスロジックを利用 することもできます。 Java パースペクティブに切り替えます 右上のショートカットバーで「パースペクティ ブを開く」アイコンをクリックし、「Java」を選択 します。 Java プロジェクトを新規作成します メニューからファイル|新規|プロジェクトを 選択して、新規プロジェクトダイアログを表 示させます。 2-1-3 新規プロジェクトダイアログで Java プロジェ クトを選択し、[次へ]ボタンを押します。 プロジェクト名に「Hello」を入力し、プロジェク ト・レイアウトで「別のソースおよび出力フォ ルダーを作成」を選択して[次へ]ボタンを押 します。 [終了]ボタンを押します。 しばらくすると、パッケージエクスプローラに 生成された Hello プロジェクトが表示されま す。 2-1-4 Hello クラスを作成します パッケージエクスプローラに表示されている Hello プロジェクト上で右クリックし、新規|ク ラスを選択します。 パッケージに 「com.nec.webotx.webservice.sample」を、名 前に「Hello」を指定し、[終了]ボタンを押しま す。しばらくすると、Hello プロジェクトの中に Hello クラスが生成されます。 生成された Hello クラスに次のように実装し、保存します。ビルドを保存時に自動実行する設定にして いない場合には、保存後にプロジェクトビルドを手動で行ってください。 package com.nec.webotx.webservice.sample; public class Hello { public String say_hello(String name) { return "Hello " + name + " !"; } } 2-1-5 2.1.2.Web サービスを作成する 次は、作成した Java アプリケーションから Web サービスを作成します。まず、Web サービス作成ウィザー ドを使って Web サービスプロジェクトをつくります。その後、Web サービスプロジェクトに生成された Web サービスを WAR ファイルにアーカイブします。 Web サービス作成ウィザードを実行します メニューからファイル|新規|プロジェクト を選択して、新規プロジェクトダイアログを 表示させます。 新規プロジェクト画面で Web サービス| Web サービスプロジェクトを選択し、[次へ] ボタンを押します。 プロジェクト名に「HelloService」を指定し、 [次へ]ボタンを押します。 2-1-6 Web サービス名に「Hello」、Web サービスの 属する名前空間 URI に 「http://sample/Hello」を指定し、[次へ]ボタ ンを押します。 そのまま[次へ]ボタンを押します。 Web サービスにする既存のビジネスロジッ クでプロジェクトを選択し、『3.1.1.Java アプリ ケーションを作成する』で作成した Hello プロ ジェクトを指定し、[次へ]ボタンを押します。 2-1-7 プルダウンメニューから com.nec.webotx.webservice.sample を選択 し、上側のリストに表示された Hello クラスを 選択し、[▼]ボタンを押します。下側のリスト に com.nec.webotx.webservice.sample.Hello が入っていることを確認して、[次へ]ボタン を押します。 プルダウンメニューから com.nec.webotx.webservice.sample.Hello を 選択し、上側のリストに表示された say_hello メソッドを選択し、[▼]ボタンを押し ます。下側のリストに com.nec.webotx.webservice.sample.Hello #say_hello(java.lang.String)が入っていること を確認して、[次へ]ボタンを押します。 そのまま、[次へ]ボタンを押します。 2-1-8 [終了]ボタンを押します。しばらくすると、パ ッケージエクスプローラに「HelloService」プ ロジェクトが表示されます。 WAR ファイルを作成します メニューから、ファイル|エクスポートを選択 し、エクスポートダイアログを表示します。 「Web | WAR ファイル(WebOTX)」を選択し、 [次へ]ボタンを押します。 2-1-9 プルダウンメニューに表示されたプロジェク トの中から、「HelloService」を選択し、出力 ファイルに WAR ファイルの出力先(ファイル 名は Hello.war)を指定し、[終了]ボタンを押 します。 これで、Web サービスの WAR ファイルが作 成されます。 2-1-10 2.1.3.Web サービスをテスト用サーバに配備する まず、テスト用サーバが起動しているか確 認します。起動していない場合、起動してく ださい。 ここで紹介している 方法でテストするに は、WebOTX Developer のインスト ール時に、「テスト用 サーバ」がインストー ルされている必要が あります。 右上のショートカットバーで「パースペクテ ィブを開く」アイコンをクリックし、「その他」 を選択します。 パースペクティブを開くダイアログから WebOTX 運用管理ツールを選択し、OK を 押します。 接続ダイアログが出たら、ドメインに 「domain1」、ポート番号に「6212」、ユーザ 名に「admin」、パスワードに「adminadmin」 が設定されているのを確認して、[接続]ボ タンを押します。なお、このユーザ名とパス ワードは初期値です。先に変更した場合 は、それに合わせてください。 2-1-11 ドメインのツリーが表示されたら、アプリケ ーションのところで右クリックし、「コンポー ネントの配備」を実行します。 コンポーネント配備ダイアログが表示され るので、コンポーネントタイプで「Web コンポ ーネント」を選択し、ファイルに先に作って おいた WAR ファイルを指定し、[配備]ボタ ンを押します。 確認ダイアログでは、[はい]を選択します。 配備が実行されるのでお待ち下さい。 配備が正常終了したら、[OK]ボタンを押し ます。これで配備は完了です。 2-1-12 2.1.4.Web サービスをテストする メニューから、実行|構成および実行を選 択します。 左の表で「Java アプリケーション」を選択し、 左上にある[新規]ボタンを押します。名前に 「Hello Service」を、プロジェクトに 「HelloService」を、メインクラスに 「webotx.ws.ds.Hello.Main」を指定し、[実行] ボタンを押します。 コンソールビューに、「Hello !」と表示され れば、Web サービスのテストは完了です。 2-1-13 2.1.5.チュートリアル関連サンプルのご紹介 チュートリアルで紹介したものの応用パターンや、チュートリアルで作成した Web サービスを利用したサ ンプルについてご紹介します。ここに取り上げていないサンプルについては、『4.プログラミング・開発』の 中で紹介する機能や応用テクニックと関連付けて説明していますので、そちらをご参照ください。 EJB サービスエンドポイント チュートリアルでは Web サービスの実装方式を Web アプリケーションにしましたが、それを EJB にした場 合を再現したサンプルです。 動作方法 EJB サービスエンドポイントサンプルのアーカイブ「ejb_endpoint.zip」を任意の場所に置き、次の操作を 行ってください。 メニューから、ファイル|インポートを選択 し、インポートダイアログを表示します。「一 般|既存プロジェクトをワークスペースへ」 を選択し、[次へ]ボタンを押します。 インポートダイアログでは、「アーカイブ・ファ イルの選択」の欄に、ejb_endpoint.zip を指 定し、下のプロジェクト欄で全てのプロジェク トが選択されているのを確認し、[終了]ボタ ンを押します。 「EJB」フォルダが Web サービス化する前の EJB プロジェクト、「EJBService」フォルダが Web サービス化した後の Web サービスプロ ジェクトです。 チュートリアルと同じ手順で運用管理パースペクティブを起動し、EJBService プロジェクトのルートフ ォルダにある「HelloEJBService.jar」をテスト用サーバに配備します。 メニューから、実行|構成および実行を選択して実行ダイアログを表示し、「ejb_endpoint」構成を選 択して[実行]ボタンを押します。 2-1-14 スタティック(静的)スタブ - クライアント チュートリアルで作成した Web サービスに、WSDL からコマンドを使ってスタブクラスを生成し、それを利 用して Web サービスのクライアントを作成して Web サービスを利用するサンプルです。Web サービス生 成ウィザードが生成するテスト用のクライアントコードもこの方法を利用しています。 動作方法 スタティックスタブサンプルのアーカイブ「static_stub.zip」を任意の場所に解凍し、EJB エンドポイントサン プルと同様にインポートします。実行ダイアログで「static_stub」構成を選択して実行します。 ダイナミック(動的)プロキシ - クライアント チュートリアルで作成した Web サービスに、直接公開されている WSDL を参照して Web サービスのクラ イアントを作成し、Web サービスを利用するサンプルです。スタブクラスを呼び出さずにクライアントコード を作成でき、動的に Web サービスクライアントを生成して動かすことを可能にします。 動作方法 ダイナミックプロキシサンプルのアーカイブ「dynamic_proxy.zip」を任意の場所に解凍し、EJB エンドポイ ントサンプルと同様にインポートします。実行ダイアログで「dynamic_proxy」構成を選択して実行します。 DII - クライアント チュートリアルで作成した Web サービスに、JAX-RPC のインタフェースを直接呼び出す「DII(Dynamic Invocation Interface)」という実装方法で Web サービスクライアントを作成し、Web サービスを利用するサ ンプルです。Call オブジェクトを作成し、そこにアクセスしたい Web サービスの情報を手動でセットしていく というやり方で、上級者向けの方法ですが、細かい設定ができるという利点があります。 動作方法 DII サンプルのアーカイブ「dii.zip」を任意の場所に解凍し、EJB エンドポイントサンプルと同様にインポー トします。実行ダイアログで「dii」構成を選択して実行します。 Web サービスの公開 チュートリアルで作成した Web サービスを、UDDI レジストリに登録するサンプルです。 動作方法 Web サービスの公開サンプルのアーカイブ「publish.zip」を任意の場所に解凍し、EJB エンドポイントサン プルと同様にインポートします。「src」フォルダにある「JAXRSample.properties」ファイルを開き、次のよう に値を設定します。 設定項目 値 query.url UDDI レジストリの検索用 URL を指定します。 publish.url UDDI レジストリの登録用 URL を指定します。 registry.username UDDI レジストリにログインするためのユーザ名を指定します。 registry.password UDDI レジストリにログインするためのパスワードを指定します。 設定が終了したら、実行ダイアログで「publish」構成を選択して実行します。 Web サービスの検索 「Web サービスの公開」サンプルで登録した情報を検索するサンプルです。このサンプルを動作させる前 に、「Web サービスの公開」サンプルを動作させ、チュートリアルで作成した Web サービスを UDDI レジス トリに登録しておいてください。 動作方法 Web サービスの検索サンプルのアーカイブ「query.zip」を任意の場所に解凍し、EJB エンドポイントサンプ ルと同様にインポートします。「src」フォルダにある「JAXRSample.properties」ファイルを開き、次のように 値を設定します。 2-1-15 設定項目 値 query.url UDDI レジストリの検索用 URL を指定します。 設定が終了したら、実行ダイアログで「query」構成を選択して実行します。 .NET(C#) - クライアント チュートリアルで作成した Web サービスに、「.NET」で作成した Web サービスクライアントからアクセスす るサンプルです。ここでは Microsoft VisualStudio .NET 2003(以降 VisualStudio .NET)を用いてチュートリ アルで作成した HelloService にアクセスするコンソールクライアントを作成します。 VisualStudio .NET は WebOTX ライセンスにはバンドルされていません。ご利用の際は別 途 Microsoft 社より該当製品をご購入ください。 プロジェクトの作成 VisualStudio .NET を起動し、VisualStudio .NET のプロジェクトを新規作成します。「ファイル|新規作成 |プロジェクト」もしくは、スタートページの「新しいプロジェクト」でウィザードを起動し、プロジェクトの作 成を開始します。 C#のコンソールアプリケーションを作成するので、Visual C#プロジェクト|コンソールアプリケーショ ンを選択します。また、この画面でプロジェクト名と保存する場所も設定します。実際に出力される場 所は「プロジェクトは~に作成されます。」という表示を確認します。 Web 参照の追加 2-1-16 プロジェクトを作成すると Class1.cs が自動生成 されていますが、ソース記述の前に次のどちら かの手順で Web 参照の追加を行います。 ■メニューからプロジェクト|Web 参照の追加を 選択 ■画面右側の「ソリューションエクスプローラ」で プロジェクト名か参照設定で右クリックし、Web 参照の追加を選択 Web 参照の追加では、WSDL を参照することでクライアント用の中間コードを生成します。Web 参照の 追加ダイアログの URL 欄に WSDL の URL かファイルパスを次のように入力します。 (例) http://localhost/HelloService/Hello?wsdl (例) C:\workspace\HelloService\xml\Hello.wsdl 入力後、[移動]ボタンを押します。Web サービスが見つかった場合、右側のウィンドウにサービスのリ ストが表示されます。ここでは、Hello サービスが表示されていることを確認してください。 Web サービスが正常に参照できたら、プロジェクト内に追加します。Web 参照名にユニークな名前を 入力して[参照の追加]ボタンを押します。 プロジェクト配下に Web Reference が追加され、 その下に設定した参照名で Web サービスクライ アントの中間コードが生成されます。 ここでエラーが発生した場合、WSDL の公開方 法が間違っていることがあります。また、WSDL の書式によっては VisualStudio .NET で処理でき ないことがあります。詳細については VisualStudio .NET のマニュアを参照してくださ い。 コーディング Class1.cs にソースコードを追加します。太字の 4 行を追加してください。 using System; namespace HelloServiceClient { class Class1 { [STAThread] 2-1-17 static void Main(string[] args) { WebReference.Hello binding = new WebReference.Hello(); binding.Url = "http://localhost/HelloService/Hello"; String ret = binding.say_hello_Hello("WebOTX"); Console.WriteLine("Message: " + ret); } } } 次の値は環境により変更しなければならないことがある場合があります。 名称 WebReference.Hello binding.Url binding.say_hello_Hello("WebOTX"); 説明 Web サービスのインスタンスを呼び出します。 記述名は「Web Reference 以下に記述された参 照名」+「.(ドット)」+「Web サービス名」になりま す。 ターゲットの URL を指定します。ポートやサー バ名が変更になった場合や、TCP モニタで SOAP メッセージを確認したい場合に適宜変更 してください。 例では入力値を埋め込んでいますが、コンソー ルでの対話型にしたり、外部ファイルから読み 込ませたりすることも可能です。手順について は VisualStudio .NET のマニュアル等を参照し てください。 メニューから、ビルド|ソリューションのビルド を選択してソースをビルドします。 正常にビルドが完了すると画面下の出力に右 のような出力になります。もし失敗が 0 でない 場合は、ソースの記述が間違っていないか確 認してください。 接続テスト 実際に Hello サービスにアクセスしてテストします。正常に通信できた場合、次のようなメッセージが表示 されます。 リリース 2-1-18 ビルドファイルのリリースを行います。 次のどちらかの操作を行います。 ■画面上部の Debug を Release に変 更 ■メニューから、ビルド|構成マネー ジャを選択し、アクティブソリューション 構成を Release に変更 プロジェクト内の bin\Release フォルダ 内に exe ファイルが出力されます。 出力された exe ファイルを使用すると、 Hello サービスへアクセスできます。 2-1-19 Excel - クライアント Microsoft Office は VisualStudio .NET と同様に Web サービスのクライアントとして動作させることができ ます。ここでは、チュートリアルで作成した Hello サービスに、Microsoft Excel 2003(以後 Excel 2003)と追 加プログラムの Microsoft Office 2003 Web Services Toolkit を利用してアクセスする手順を説明します。 Microsoft Office System (Excel 2003)で Web サービスを利用する場合、Microsoft Office 2003 Web Services Toolkit を別途入手し、事前にインストールしておく必要があります。 また、Microsoft Office XP(Excel 2002)を利用する場合は Office XP Web Services Toolkit 2.0 が必要になります。各ソフトウェアの詳細情報、およびダウンロードにつきましてはマイク ロソフトのホームページ http://www.microsoft.com/japan/をご覧ください。 ここでは Excel 2003 を利用していますが Excel2002 も手順は 基本的に同じです。 Microsoft Office Excel 2003(以降 Excel)のメニューから、ツール|マクロ|Visual Basic Editor を選択し、 「Visual Basic Editor」を起動します。 Visual Basic Editor の Microsoft Office 2003 Web Services Toolkit のウィザードを起動して Web サービス の参照を行います。メニューから、ツール|Web Service References を選択してウィザードを起動しま す。 Web Service References は、Microsoft Office 2003 Web Services Toolkit(Excel 2002 の 場合は Office XP Web Services Toolkit 2.0)がインストールされていない場合、メニューに 表示されません。表示されない場合、正常にインストールされているか確認してください。 2-1-20 WSDL を参照するので、「Web サービス URL」 を選択し、URI の入力フィールドへ利用した いサービスの WSDL の URL かファイルパス を指定します。 (例) C:\workspace\HelloService\xml\Hello.wsdl (例) http://localhost/HelloService/Hello?wsdl 指定後、[検索]ボタンを押し、WSDL を検索 を実行します。 WSDL ファイルが見つかると、検索結果に利 用できる Web サービスが表示されます。 Hello サービスが表示されていることを確認 し、「Hello」にチェックを入れ、[追加]ボタンを 押します。 Excel 上で利用するためのコードを記述しま す。メニューから、挿入|標準モジュールを 選択して標準モジュールを追加します。 VBA コードは次のように記述します。Function 名の hello は Excel 中で呼び出す関数名になります。 Public Function hello(in0 As String) Dim binding As New clsws_Hello hello = binding.wsm_say_hello_Hello(in0) End Function 以上で準備は完了です。記述した標準モジュールを保存し、Visual Basic Editor を閉じます。 2-1-21 標準モジュールで記述した関数 hello を実 際に呼び出します。 実行すると「Hello WebOTX !」が表示されま す。 2-1-22