検証 2.簡単なサンプルの作成と実行野畠英明ヒューレット・パッカード・ソリューションデリバリ(株) 2003/05/13 |
|
|
Officeを使った簡単なサンプル
インストールが完了したら、動作確認をかねて、簡単なサンプル(HelloWorldサービス)を作成して実行してみよう。このサンプルでは、Webサービス側は決まった文字列を返すだけで、Webサービス・クライアントであるExcelでその文字列を単純にセルに表示する。単純なサンプルだが、Webサービス・クライアントとしてのOfficeの動きを理解していただけると思う。下図にこのサンプルの論理的な構成を示す。
作成するサンプル・プログラムの構成 |
Office XPに追加インストールしたOffice XP WSTを使い、WebLogic Server側で提供する“Hello World”WebサービスをExcelから呼び出す。Excelでは、VBAマクロからOffice XP WSTで作成されたプロキシ・クラス、SOAP Toolkitを通してWebサービスにアクセスする。 |
Excel側には、Office XP WSTで作成されたプロキシ・クラスがあり、そのクラスがSOAP Toolkitを用いて、Webサービスにアクセスする。
WebLogic Server側には、EJB(Enterprise JavaBeans。Windowsでの開発に慣れている方はCOMコンポーネントに近いと思ってもらうとよいだろう)として実装されたコンポーネントが配置されており、このコンポーネントをWebサービスとして公開している。
ここではWebLogic Serverの機能について詳しくは触れないので、興味のある方は、適宜別の記事を参照されたい。例えば、WebLogic ServerのWebサービス機能については、下記の記事の「Webサービスでの統合」が参考になる。
また、EJBに関してより詳しく知りたい方は、下記の記事を参考にするとよいだろう。
HelloWorldサービス(サーバ側)の作成
すでに述べたとおり、サーバ側では、デフォルトでインストールされるExamples ServerにWebサービスを構築する。このサーバは、TCPの7001番ポートを利用し、開発モード(特別なインストール作業なしでWebサービスを配置できるモード)で動作する。
最初にサーバを起動しておく。具体的には[スタート]−[すべてのプログラム]−[BEA WebLogic Platform 7.0]−[BEA WebLogic Server 7.0]−[Server Tour Examples]−[Launch Examples Server]を実行する。起動にはしばらく時間がかかるが、起動時のコマンド・プロンプト・ウィンドウに以下のメッセージが出力されたら起動完了である。
<2003/xx/xx xx:xx:xx:JST> <Notice>
<WebLogicServer> <000354> <スレッド "ListenThread.Default"
はポート 7001 をリスンしています。> |
次にWebサービスを実装するEJBをビルドするのだが、まずはEJBを構成する3つのインターフェイス/クラスを紹介しよう。なお、以下で紹介する今回のサンプル・プログラムは、次のリンクからダウンロードできる。
インターフェイス/クラス | 内容 |
リモート・インターフェイス | Webサービスのインターフェイスになる。今回の例ではHelloWorld.java |
ホーム・インターフェイス | HelloWorldHome.java |
Beanクラス | Webサービスの実装を提供するクラス。今回の例ではHelloWorldBean.java |
最初のリモート・インターフェイスは、次のようなもので、helloWorldというメソッドを呼び出すと、文字列を返すというサービスである。
|
|
HelloWorld.java |
次にホーム・インターフェイスは、次のようになる。
|
|
HelloWorldHome.java |
BeanクラスのhelloWorldメソッドの実装は、次のように単純に“!!! Hello World !!!”という文字列を返すものである。
|
|
HelloWorldBean.java(メソッド部分) |
先ほど紹介した3つのインターフェイス・クラス・ファイルのほかに、3つのXMLファイルも含めて以下のパスに配置してほしい。ここでは「c:\work」以下に配置しているが、実際には「c:\work」以下のディレクトリ構造を維持する限りどこでも構わない。
パス | ファイル |
C:\work | build.xml ejb-jar.xml weblogic-ejb-jar.xml |
C:\work\webservice\sample\HelloWorld | HelloWorld.java HelloWorldBean.java HelloWorldHome.java |
作成したファイルの配置場所 | |
ここではc:\workとしているが、実際には任意のディレクトリに配置できる。 |
ここで1つ注意点がある。Build.xmlには、WebLogicのインストール・パスに依存する部分があるので、下記の「WL_HOME」の部分を%WL_HOME%(実際のパス)で書き換えてほしい。
<!-- WL_HOMEを環境に合わせた値に置き換えてください
--> |
ファイルの配置が完了したら、それらのファイルを使って、HelloWorldサービスをビルドする。
これにはコマンド・プロンプトを起動し、%WL_HOME%\samples\server\config\examplesにあるsetExamplesEnv.cmdを実行する。こうやってビルドに必要な環境変数を設定した上で、カレント・ディレクトリをC:\work\webservice\sample\HelloWorldに移動し、antコマンドを実行してこのサービスをビルドする。
%WL_HOME%\samples\server\config\examples>setExamplesEnv.cmd |
antコマンドが終了して、最後に「BUILD SUCCESSFUL」と表示されていれば成功である。
これでWebサービスの実装がビルドされ、WebLogic Serverのフォルダに配置されるので、自動的にWebサービスが利用可能になるはずである。利用可能になったかどうかは、Examples Server起動時のコマンド・プロンプト・ウィンドウで、サービスのアクティブ化完了のメッセージを確認してほしい。以下のようなメッセージが表示されていれば成功である。
<2003/xx/xx xx:xx:xx:JST> <Notice>
<Application Poller> <149400> <Activating application: _appsdir_webservices_helloworld_ear> |
クライアント側の作成
以上でサーバの準備が整ったので、今度はExcelをWebサービス・クライアントとして利用し、作成したWebLogic Server上のサービスを呼び出してみよう。
まず、Excelを起動し、[ツール]−[マクロ]−[Visual Basic Editor]を実行する。
次に[ツール]−[Web Service Reference]を実行すると、以下のようなダイアログが表示される。
WebService References Tool 2.0ダイアログ |
Office XP WSTの操作用ダイアログ。ここからWebサービスの検索やプロキシ・クラスの登録などが行える。 |
この[Web Service References Tools 2.0]ダイアログから、Officeに追加インストールしたOffice XP WSTの各種設定を行える。
ここで、[WebサービスURL]チェック・ボックスをオンにし、WebLogic Server上に配置したWebサービスのWSDLを指すURL(特にポート番号を変えていなければ、「http://localhost:7001/hellowebservice/HelloService?WSDL」)を指定する。続いて[検索]ボタンをクリックすると、サーバ側が参照され、次のようにWSDLの検索結果が表示される。
WSDLの検索結果 | ||||||
WSDLのURLを指定して[検索]ボタンをクリックすると、Webサービス・サーバへのアクセスが行われ、WSDLの検索結果が表示される。 | ||||||
|
見付かった「HelloService」にチェックを付け、[追加]をクリックする。
Webサービスを追加する | ||||||
検索されたWebサービスから必要なサービスを選択し、プロキシ・クラスを生成する。 | ||||||
|
すると、Webサービスにアクセスするためのプロキシ・クラス(clsws_HelloService)が生成される。
生成されたプロキシ・クラス |
生成されたプロキシ・クラスをVisual Basic Editorで表示したところ。 |
ここで、生成されたプロキシ・クラスについて解説しておこう。プロキシ・クラスの名前は、サービス名に「clsws_」を付けたものとなる。また、生成されたプロキシ・クラスのClass_Initializeプロシージャには、次のようなコードが出力される。
Set sc_HelloService = New SoapClient30 |
SoapClient30というCOMコンポーネントを利用していることから、SOAP Toolkitを使っていることが分かるだろう。アクセス方法に関するプロパティの設定などを変える必要がある場合は、このプロシージャを変更するとよい。例えば、プロキシ・サーバをクライアントのInternet Explorerの設定によらず固定にしたければ、上記の"<CURRENT_USER>"を”proxy:8080”などと書き換える。詳しくはSOAP ToolkitのUser Guideを参照していただきたい。
HelloWorldサービスのオペレーションはwsm_helloWorldメソッドにマッピングされる。つまり、Webサービスのオペレーション名に「wsm_」を追加したメソッドになる。
プロキシ・クラスのメソッドをExcelのシート上から直接呼び出すことはできないので、[挿入]−[標準モジュール]をクリックし、Webサービスにアクセスする関数を作成する。
プロキシ・クラスのメソッドにアクセスする関数を作成する |
Excelのシートから直接プロキシ・クラスのメソッドは呼び出せないので、これを呼び出すための関数を別途作成する。 |
|
|
標準モジュールに記述するコード |
ここまでで準備は完了である。[ファイル]−[終了してMicrosoft Excelへ戻る]をクリックし、Visual Basic Editorを終了する。
サンプルの動作例
Webサービスにアクセスする準備が整ったので、さっそく試してみよう。適当なセルに「=HelloWorld()」と入力し、数秒待っていただきたい。
次の画面のように「!!! Hello World !!!」と表示できたらWebサービスへのアクセスは成功だ。
サンプル・プログラムの実行例 |
Excelを起動し、適当なセルに「=HelloWorld()」と入力すると、Webサービスが呼び出されて、その結果である文字列「!!! Hello World !!!」がセル内部に表示される。 |
■
今回は、Webサービス・クライアントとしてのOfficeについて解説し、シンプルな例を取り上げてOfficeからWebLogic Server上のWebサービスにアクセスしてみた。
次回は、営業支援を例に挙げて、より具体的な使い方を示していこうと思っている。
INDEX | ||
新世代リッチ・クライアントの可能性を探る(前編) | ||
1.本稿の目的と想定する技術・環境 | ||
2.簡単なサンプルの作成と実行 | ||
新世代リッチ・クライアントの可能性を探る(後編) | ||
1.営業支援システムを作る | ||
2.営業支援システムの利用シナリオ(1) | ||
3.営業支援システムの利用シナリオ(2) | ||
4.サンプル実装の設計 | ||
検証 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|