レベル: 初級 米持 幸寿, テクノロジー・エバンジェリスト, IBM
2006年 8月 10日 .NETを使うお客様で「安定性の良いWebSphereをサーバーにしたい」という声が多く聞かれます。この記事では、.NETからWebサービスを使ってWebSphereの機能(メソッド)にアクセスする手順を紹介します。
はじめに
以下の手順を行うには、次のソフトウェアが必要です。
|
IBM
| WebSphere Studio V5.1 | |
Microsoft
|
VisualStudio.NET または VisualStudio.NET 2003
|
実装クラスの準備
- あたらしいワークスペースを開きます(理解しているなら既存のものでかまいません)。
-
新規にエンタープライズ・アプリケーション・プロジェクトとWebプロジェクトを作ります(理解しているなら既存のものでかまいません)。
-
|
エンタープライズ・アプリケーション
| Test(Test.ear) | |
Webアプリケーション
| TestWeb(TestWeb.war) |
- Webパースペクティブを開きます。
-
TestWeb/JavaSourceの
ソースコード
(ZIP:8KB)
をインポートします。インポートするには、ZIPファイルを展開し、「com」フォルダーをJavaSourceにドラッグ&ドロップします。
- サービス用クラスは以下のとおりです。
-
|
データ表現クラス
|
Value.java
ComplexValue.java
ComplexValueByClass.java
| | |
サービス実装クラス
|
TestSimple.java
TestArrayOfSimple.java
TestValue.java
TestArrayOfValue.java
TestComplex.java
TestClassComplex.java
| これらのファイルすべてに対してWebサービスのウィザードを実行する |
Webサービス化
サービス実装クラスに対して、Webサービス・ウィザードをデフォルトで実行します。
- ソースファイルを右クリックし、ポップアップメニューを表示します。
- 「新規」-「その他」を選びます。
- 「Webサービス」-「Webサービス」を選び、「次へ」をクリックします。
-
次の項目にチェックを入れます。
「Webサービスのテスト」
「プロキシーの生成」
「生成されたプロキシーをテストする」
「警告なしにファイルを上書き」
- すべて「次へ」をクリックするか、「終了」をクリック。
- 「JSPクライアントは・・・配列をサポートししません」というような警告が出た場合は、無視。
- 必要に応じて、テストクライアントを実行し、テストしてください。
注: Studio5.1では、Webサービスのデプロイメント・モデルを選択できます。
WSDLの変更と公開
WSDLは、エンドポイント・アドレスが「localhost」になってしまっていますので、正しいホスト名に修正します。
-
WSDLをダブルクリックしてください。
-
サービスのタブが付いたエリアの[+]マークをクリックしてツリーを開き、wsdlsoap:addressをクリックします。
-
下半分にアドレスが表示されるので、localhostを正しい値に書き換えます。
-
CTL+Sを押して保存して閉じます。
-
すべてのWSDLファイルに対して行います。
-
WSDLファイルのURLは長いので、inex.htmlにリンクを作りましょう。
-
文書ルート(WebContent)に「index.htm」を作ります。
(WebContentを右クリックして「新規」-「HTML/XHTML」)
-
ナビゲーター上のWSDファイルをindex.htmlを編集中のページデザイナーでドラッグ&ドロップします。
図: エンドポイントのアドレスを変更
VisualStudio.NETへの取り込み
1.VisualStuio.NETを起動し、新しいASP.NET Webプロジェクトを作成してください。
2.ナビゲーター・ビューのプロジェクト(ここではInteropWAS502)を右クリックしてポップアップメニューを表示し、「Web参照の追加」を選択します。
3.アドレス・バーに以下のアドレスを入力します。
http://localhost:9080/TestWeb/
4.WSDL一覧が表示されたら、TestClassComplex.wsdlをクリックします。
5.「参照の追加」ボタンをクリックすると、このWSDLがプロジェクトに追加されます。
6.ソリューション・エクスプローラーの上部にある「すべてのファイルを表示」ボタンをクリックし、localhostの下のツリーを展開すると、Reference.csというファイルがあるので、ダブルクリックします。
7.このコードは、VisualStudio.NETによって生成されたプロキシークラスです。namespace名をクリップボードにコピーしておきます。
実行用Webページの作成
1.ソリューション・エクスプローラーでソリューション名を右クリックし、「追加」-「Webフォームの追加」を選びます。
2.名前は何でもかまいませんが、ここではWebForm1.aspxとなったと仮定します。
3.Studioのウィンドウの左端にある「ツールボックス」にマウスポインターを動かすと、ツールボックスが現れます。「Table」をドラッグ&ドロップして画面に配置します。
4.右下にある「プロパティ」に(ID)が表示されています。これを覚えておきます。ここでは、「Table1」という名前になったと仮定します。
同様にして、データ個数を表示するLabel1も貼り付けてください。
5.画面を右クリックして「コードの表示」を選びます。
6.コード上部にusingが並んでいます。その一番下に「usingInteropWAS502.localhost;」(先ほどクリップボードにコピーしたnamespace)を追加します。
7.「// ページを初期化するユーザーコードをここに挿入します。」の下の行に、以下のコードを入力します。
TestClassComplexService s = new TestClassComplexService();
ComplexValueByClass cv = s.downloadComplexByClass();
Label1.Text = "" + cv.valueArray.Length;
for(int i=0; i<cv.valueArray.Length; i++)
{
TableRow tRow = new TableRow();
TableCell tCell = new TableCell();
tCell.Text = "stringval";
tRow.Cells.Add(tCell);
tCell = new TableCell();
tCell.Text = cv.valueArray[i].stringval;
tRow.Cells.Add(tCell);
Table1.Rows.Add(tRow);
} |
8.PF5を押して実行します。
以上の作業で、WebSphere上のWebサービスと、.NETのクライアントが、図のような複雑なオブジェクトの交換ができました。これは、WS-Iによって実現された相互接続性によるものです。
著者について  | |  | 1987年に日本アイ・ビー・エム入社。メインフレームOS、ミドルウェアの障害対応、障害解析ソフトウェアの開発、ワークフローシステム開発、オブジェクト指向開発、Web開発など経験。2000年より、ソフトウェアのテクノロジーエバンジェリストとして活動中。 |
記事の評価
|