IBM®
本文へジャンプ
    Japan [変更]    ご利用条件
 
 
検索範囲検索:    
    ホーム    製品    サービス & ソリューション    サポート & ダウンロード    マイアカウント    
skip to main content

developerWorks Japan  >  SOA and Web services | Java technology | Rational  >

WebSphere Studio Application Developer

WebサービスをHTTPプロキシー経由で呼び出そう

developerWorks
ページオプション

JavaScript を要するドキュメントオプションは表示されません


レベル: 初級

米持 幸寿, テクノロジー・エバンジェリスト, IBM

2006年 8月 08日

Webサービスは、多くの場合インターネットに置かれています。WSDLを利用すれば簡単にアクセスできるため、システムインテグレーションを短期化したり、コストを削減することができます。

はじめに

現代のWebサービスの多くはHTTPを使ったSOAPサービスです。インターネットに置かれているWebサービスを呼び出すには、そのHTTPサーバーに直接アクセスする必要がありますが、多くの場合企業内のネットワークからTCPソケットはオープンできません。ファイアウォールがあるからです。しかし、Webサービスを呼び出すためには、HTTPプロキシー・サーバーを利用することができます。

この資料では、IBM WebSphere Studioを使って生成したSOAPプロキシー・クラスを使って、HTTPプロキシー・サーバー経由でインターネットに置かれているWebサービスを呼び出す手順をご紹介します。


HTTPプロキシー・サーバー経由でインターネットに置かれているWebサービスを呼び出す手順

この手順を皆さんの企業イントラネットから行うには、固定アドレスでHTTPプロキシー・サーバーが必要です。ここでは、proxy.mycompany.com:8080 をHTTPプロキシー・サーバーとして解説します。




上に戻る


注意

ここでは、WebSphere Studio Application Developerを使用していますが、SiteDeveloper Advanced、Application Developer - Integration Editionなど、いくつかの製品がWebサービス開発機能を装備しています。

WebSphere Studioを起動し、Webプロジェクトを作成してください。(既存のものを使ってもかまいません。手順を知らない方は、連載「WSADでWebサービスを作ってみようをご覧ください。ここでは、エンタープライズ・アプリケーション・プロジェクト「WSHTTP」とWebプロジェクト「WSHTTPWeb」を作りました。




上に戻る


アクセスするWebサービス

ここでは、WebSphere Studioのヘルプにも紹介されている xmethods サイトのWether - Temperatureサービスを企業イントラネットから呼び出す手順をご紹介します。

まず、xmethods サイトをブラウザーで開き、Weather - Temperatureサービスを探してください。現在ではトップページの下の方にリンクがあります。サービスのページを開くとWSDLの場所が書いてあります。

http://www.xmethods.net/sd/2001/TemperatureService.wsdl



上に戻る


プロキシー・クラスを作成する

Webプロジェクト「WSHTTPWeb」の下にある「webApplicatioin」フォルダーの下に、新規にフォルダー「wsdl」を作り、次の手順で先程のWSDLファイルをインポートします。

1. ナビゲーター・ビューの上で、WSHTTPWeb/webApplication/wsdlフォルダーを選択する。
2. メニューから「ファイル」-「インポート」を選択する。メニューから「ファイル」-「インポート」を選択する。
3. インポート・ソースの選択で、HTTPを選び、「次へ」ボタンをクリックする。
4. HTTP URLに先程のWSDLファイルのURLを入力する。
5. 「拡張」ボタンを押し、「接続にプロキシーを使用」のチェックを入れて、HTTPプロキシー・サーバーのアドレスとポートを指定してOKボタンをクリックする。

拡張設定画面
6. ナビゲーター・ビュー上で、ダウンロードされたWSDLファイルを選択して右クリックし、「新規」-「その他」で「Webサービス」-「Webサービス・クライアント」を選んで「次へ」ボタンをクリックする。

ナビゲーター・ビュー
7. 「終了」ボタンを押すと、WSDLファイルがHTTPでダウンロードされる。
8. 「サンプルの生成」「サンプルの起動」「警告なしにファイルを上書き」をチェックし、「次へ」ボタンを押す。

Webサービス・クライアント~「サンプルの生成」「サンプルの起動」「警告なしにファイルを上書き」をチェックする画面
9. WSDLファイルが正しく指定されていることを確認して「終了」ボタンを押す。

Webサービス・クライアント~WSDLファイルを指定する画面

以上で、標準的なプロキシー・クラスが生成されます。WebSphereテスト環境が起動し、ウィザードによって生成されたサンプルJSPファイルがブラウザーで表示されますが、このままではファイア・ウォールがあるために接続がうまくいきません。


サーバー - Application Developer画面



上に戻る


プロキシー・クラスを改造する

SOAPプロキシー・クラスは、Webプロジェクト「WSHTTPWeb」の中に source/proxy/soap/TemperatureServiceProxy.javaという名前で生成されているはずです。これは、このWebプロジェクト上に proxy.soapパッケージがあり、その中にクラスが生成されているという意味です。


ナビゲーターの表示

このプロキシーを少しだけ改造すると、HTTPプロキシー・サーバー経由でインターネットにあるWebサービスを呼び出すことができます。TemperatureServiceProxy.javaファイルをダブルクリックしてJavaエディターでオープンしてください。

プロキシー・クラスは、内部でApcheSOAP-APIを呼び出す代理オブジェクトです。プライベート・フィールドにある「Call」オブジェクトが、SOAP-RPC型のWebサービスを呼び出すときのApacheSOAP-APIのクラスです。もし、相手がSOAPメッセージング型のWebサービスの場合は、Messageクラスが使われます。

CallクラスやMessageクラスは、内部に「SOAPTransport」というプロパティを持っています。デフォルトでは、SOAPHTTPConnectionというサブ・クラスが使われます。このクラスはHTTPプロキシー・サーバー経由でSOAPサービスを呼び出す機能を持っていますので、これを使います。

まず、importステートメントを追加します。

import org.apache.soap.transport.http.SOAPHTTPConnection;

次に、コンストラクターを以下のように書き換えます。

public TemperatureServiceProxy()
{
SOAPHTTPConnection conn = new SOAPHTTPConnection();
conn.setProxyHost("proxy.mycompany.com");
conn.setProxyPort(8080);
call.setSOAPTransport(conn);
}

もし、HTTPプロキシーにログインする必要がある場合は、setProxyUserNameメソッド、setProxyPasswordメソッドを利用します。

Ctl+Sを押して保管、コンパイルしてください。WebSphereテスト環境上のオブジェクトは、サーバーを再起動しなくても自動的に置き換わります。

さぁ、サンプル・クライアントを実行して確認してみましょう。今度は温度(華氏)が表示されるはずです。


Webブラウザーの温度(華氏)表示

HTTP基本認証にも対応

これと同じ方法で、setUserNameメソッド、setPasswordメソッドを使えば、HTTP基本認証でアクセス制限されたWebサービスにログインさせることも可能です。



著者について

1987年に日本アイ・ビー・エム入社。メインフレームOS、ミドルウェアの障害対応、障害解析ソフトウェアの開発、ワークフローシステム開発、オブジェクト指向開発、Web開発など経験。2000年より、ソフトウェアのテクノロジーエバンジェリストとして活動中。




記事の評価


サイト改善のため、ご意見をお寄せください。こちらのフォームからお願いいたします。



 


 


不充分・不完全である大変素晴らしい
 


この記事を共有する

del.icio.us del.icio.us newsing newsing FC2ブックマーク FC2ブックマーク
Choix! Choix! ニフティクリップ ニフティクリップ Yahoo!ブックマーク Yahoo!ブックマーク
MM/memo MM/memo CZブックマーク CZブックマーク livedoorクリップ livedoorクリップ
はてなブックマーク はてなブックマーク Buzzurl(バザール) Buzzurl(バザール)




上に戻る


    日本IBMについて プライバシー お問い合わせ