このトピックでは、Web サービスの使用についての概要を説明します。WebSphere® Application Server は、さまざまな Java™ プログラミング・モデルに基づいて開発および実装された Web サービスをサポートします。Java Platform, Enterprise Edition (Java EE) のプラットフォームおよび Java EE 以外のプラットフォームなど、
複数のプラットフォームにわたって運用する場合に、Web サービスを使用します。
始める前に
Web サービス実装がユーザーのビジネス・プロセスに有益かどうかを判別します。
このタスクについて
ベスト・プラクティス: IBM® WebSphere Application Server は、
Java API for XML-Based Web Services (JAX-WS) プログラミング・モデルおよび Java API for XML-based RPC (JAX-RPC) プログラミング・モデルをサポートします。
JAX-WS は、JAX-RPC プログラミング・モデルが提供する基盤を拡張する、次世代の Web サービス・プログラミング・モデルです。戦略的 JAX-WS プログラミング・モデルを使用すると、標準ベースの注釈モデルのサポートによって、Web サービスおよび Web クライアントの開発が容易になります。JAX-RPC プログラミング・モデルとアプリケーションは引き続きサポートされますが、Web サービス・アプリケーションおよびクライアントを新規に開発する場合は、実装が容易な JAX-WS プログラミング・モデルをご利用ください。best-practices
サポートされる標準および仕様の完全なリストについては、Web サービス仕様書および API 文書を参照してください。
通常はスタンドアロン・システムとして機能している、お客様のビジネス・インフラストラクチャーの内部または外部にあるアプリケーション・システムを統合するには、Web サービス・アプリケーションを実装するのが簡単な方法です。例えば、使用しているカスタマー情報データベースがスタンドアロン・アプリケーションである場合に、アカウンティング・アプリケーションがカスタマー・データにアクセスできるようにしたいことがあります。
カスタマー・データベースの Web サービスを作成し、アカウンティング・アプリケーションを Web サービス・クライアントとして使用可能にすることができます。これで、アカウンティング・アプリケーションはカスタマー情報にアクセスすることができます。
Web サービスを実装することによって、これらの 2 つアプリケーションが効率的に情報を共有することができます。
Web サービスは既存のアプリケーションおよび情報技術資産に簡単に適用できるので、新しいソリューションの開発、デプロイ、および再構成を迅速に行い、新しいビジネス機会に対応することができます。Web サービスが普及するにつれて、サービスのプールが拡大し、インターネット上での JIT アプリケーションおよびビジネス・インテグレーションのより堅固なモデルの開発が促進されます。
アプリケーション・サーバーで Web サービス・アプリケーションを使用するには、以下のステップを実行します。
手順
- Web サービスの使用計画を立てます。 Web サービスのすべてのコンポーネントをレビューして、Web サービスの計画をより堅固なものにする方法を検討してください。
- (オプション) 既存の Web サービスをマイグレーションします。
Java EE 環境では互換性が重要視されているため、
新しい JAX-WS および JAXB 仕様をサポートするアプリケーション・サーバーの大部分
は、古い JAX-RPC 仕様を引き続きサポート
します。その結果として、既存の Web サービスは JAX-RPC ベースのままであり、新しいものは JAX-WS および JAXB を使用して開発されるという状況になる可能性があります。
ただし、時間が経過し、アプリケーションが改訂されたり、書き換えられたりする間には、JAX-RPC ベースの Web サービスを、JAX-WS および JAXB をベースにしたものにマイグレーションするのが最高の対応策だというときがあるはずです。具体的には、ベンダーが
新しいプログラミング・モデルでのみ実現可能なサービス品質への機能強化を実施することを
選択するときなどが考えられます。例えば、SOAP 1.2 および SOAP Message
Transmission Optimization Mechanism (MTOM) サポートは、
JAX-WS 2.x および JAXB 2.x プログラミング・モデルでのみ使用可能であり、JAX-RPC では使用できません。
JAX-RPC Web サービスから JAX-WS および JAXB Web サービスにマイグレーションを行う場合のベスト・プラクティスおよび例については、Web サービスのマイグレーションでのベスト・プラクティスに関する説明を参照してください。
注: 既存の JAX-RPC アプリケーションに JAX-WS フィーチャーを使用させるには、
JAX-WS プログラミング・モデルを使用して再作成する必要があります。
Apache SOAP に基づいた Web サービスを使用しており、Java EE 仕様の Web サービスを開発および実装する必要が生じた場合は、すべてのバージョン 4.0、および 5.0.2 より前のバージョン 5.0 を使用して開発されたクライアント・アプリケーションをマイグレーションする必要があります。詳しくは、Apache SOAP Web サービスの Java EE 標準に基づく JAX-RPC Web サービスへのマイグレーションに関する情報を参照してください。
- Web サービス・アプリケーションを開発します。 Web サービスの開発は、以下のいずれかの方法で行うことができます。
- JAX-WS を使用して既存の WSDL ファイルから Web サービスを開発します。
JavaBeans またはエンタープライズ Bean アプリケーションのサービス・インターフェースを記述する既存の Web サービス記述言語 (WSDL) ファイルで開始することにより、JAX-WS Web サービスを作成できます。
通常、WSDL ファイルはアプリケーション・モデリング・プロセスの一部として定義されます。
既存のサービス定義または WSDL ファイルを使用して新規アプリケーションを生成することを、Web サービス開発のトップダウン・アプローチと呼びます。
- JAX-WS を使用して Web サービス・アプリケーションを開発します。
Java API for XML-Based Web Services
(JAX-WS) プログラミング・モデルを使用して Web サービスを開発できます。
JAX-WS は、Web サービスのアプリケーションおよびクライアントを開発するための標準的なアノテーション・ベースのモデルを介して、アプリケーション開発を簡素化します。XML オブジェクトおよび Java オブジェクトの一連の共通のバインディング・ルールにより、XML データおよび処理機能を Java アプリケーションに組み込むことが容易になります。
さらなる機能拡張が、イメージまたはファイルなどのバイナリー添付ファイルを、Web サービス要求で最適に送付するのに役立ちます。
バージョン 9.0 には、JAX-WS エンドポイントとしての singleton セッション・エンタープライズ Bean に対するサポートが組み込まれています。
singleton セッション Bean は、特定の Web サービス・エンドポイント用に受信されたすべての要求を処理するために、Web サービス・エンドポイント実装 Bean の単一インスタンスが必要な場合に便利です。おそらく、Bean の単一インスタンスは、要求間にわたって状態情報を共有する必要があります。通常、それぞれの要求を処理するために、Web サービス・エンドポイント実装 Bean の新規インスタンスが作成されます。
既存の JavaBeans
あるいはステートレスまたは singleton セッション・エンタープライズ Bean から始めて JAX-WS Web サービスを開発する場合は、アノテーションを使用して Bean を JAX-WS Web サービスとして公開することができます。@WebService または @WebServiceProvider アノテーションを Bean に追加することにより、Bean が JAX-WS Web サービスとして定義されます。JAX-WS Web サービスとして公開されるエンタープライズ Bean は、EJB 3.0 以降のモジュールにパッケージする必要があります。
既存のアプリケーションを Web サービスに変換することを、Web サービス開発のボトムアップ・アプローチと呼びます。既存のサービスや Web サービス記述言語 (WSDL) ファイルから開始するの
ではなく、実装から開始するため、このプロセスは
ボトムアップと呼ばれます。
- JAX-WS Web サービス・クライアントを開発し、デプロイします。 JAX-WS Web サービスのアクセスと呼び出しの両方ができる Web サービス・クライアントは、Web Services for Java Platform, Enterprise Edition (Java EE) 仕様に基づいて開発されます。アプリケーション・サーバーは、
JAX-WS プログラミング・モデルに基づいた Enterprise JavaBeans™ (EJB) クライアント、Java EE アプリケーション・クライアント、JavaServer Pages (JSP) ファイルとサーブレットをサポートしています。
- JAX-RPC を使用して既存の WSDL ファイルから Web サービス・アプリケーションを開発します。
Web サービス開発のトップダウン・アプローチを使用して、エンタープライズ Bean 実装のサービス・インターフェースを記述する既存の WSDL ファイルで開始することにより、JAX-RPC Web サービスを作成できます。
- JAX-RPC を使用して Web サービス・アプリケーションを開発します。
Java API for XML-based RPC (JAX-RPC) プログラミング・モデルを使用して Web サービスを開発することができます。既存の JavaBeans または
エンタープライズ Bean から開始して JAX-RPC Web サービスを開発するときは
WSDL ファイルを作成する必要があります。既存の JavaBeans またはエンタープライズ Bean を使用して、
Web サービスの実装を使用可能にすることができます。
- JAX-RPC Web サービスのクライアントを開発して、デプロイします。 Web サービス・クライアントは、Web Services for Java Platform, Enterprise Edition (Java EE) 仕様および Java API for XML-based remote procedure call (JAX-RPC) 仕様に基づいて開発できます。アプリケーション・サーバーは、
JAX-RPC プログラミング・モデルに基づいた Enterprise JavaBeans™ (EJB) クライアント、Java EE アプリケーション・クライアント、JavaServer Pages (JSP) ファイルとサーブレットをサポートしています。
- サービス統合テクノロジーを介して Web サービスを使用可能にします。
サービス統合バス の Web サービス使用可能化を使用して、以下の目的を達成することができます。
- バス宛先で使用可能な、内部でホスティングされたサービスを、Web サービスとして使用可能にします。
- 外部 Web サービスを、バス宛先で内部的に使用可能にします。
- Web サービス・ゲートウェイを使用して、既存のサービス (内部でホストされているサービスまたは外部 Web サービス) を、ゲートウェイにより提供される新規 Web サービスにマップします。
Web サービスを開発して、Web Services Addressing (WS-Addressing)、Web Services Resource Framework (WSRF)、および Web Services Transaction (WS-Transaction) サポートを利用することができます。
- WS-Addressing SPI の使用: 拡張 Web サービス・アドレッシング・タスクの実行
Web サービス・アドレッシング (WS-Addressing) を利用できるように、Web サービスを開発できます。Web サービス・アドレッシングは、Web サービスをアドレス指定する標準の方法を使用し、メッセージ内でアドレス指定する情報を提供することで、Web サービス間のインターオペラビリティーを補助します。
- Web サービス・リソース・フレームワークを使用したステートフル Web サービスの作成
アプリケーション・サーバーの Web Services Resource Framework (WSRF) サポートにより、ステートフル Web サービスを WS-Resource として実装し、WS-Addressing エンドポイント参照を使用して、そのサービスを参照することができます。
- WS-Transaction ポリシーを使用した Web サービスのトランザクションまたはビジネス・アクティビティーの調整
WS-Transaction は、
WS-AtomicTransaction、WS-BusinessActivity、および WS-Coordination の各仕様を含むインターオペラビリティー標準です。アプリケーション・サーバーでの Web Services アトミック・トランザクション (WS-AT) サポートは、
Web サービス環境にトランザクションのサービスの品質を提供します。分散 Web サービス・アプリケーションおよび各アプリケーションが使用するリソースは、分散グローバル・トランザクションに参加できます。
アプリケーション・サーバーにおける Web Services ビジネス・アクティビティー (WS-BA) サポートにより、異なるシステム上の Web サービスが、アトミック・トランザクションよりも疎結合されているアクティビティーを調整することができます。
このようなアクティビティーでは、アトミックにロールバックすることが困難または不可能であるため、
エラー発生時に補正処理が必要となります。
- WS-Policy を使用した標準フォーマットでのポリシーの交換
WS-Policy は、Web サービスのポリシーの記述および伝達に使用されるインターオペラビリティー標準であり、これによりサービス・プロバイダーはポリシー要件を標準フォーマットでエクスポートできます。
クライアントは、サービス・プロバイダーの要求を独自のケイパビリティーと結合し、
特定の対話に必要なポリシーを確立できます。
- Web サービスをアセンブルします。
Web サービスをアセンブルする場合に何が必要になるのか、また、各パーツ (エンタープライズ・アーカイブ (EAR) ファイルなど) をどのような順序でアセンブルするのかを調べてください。
- Web サービスをデプロイします。
Web サービス用に構成および使用可能にされた EAR ファイルをデプロイするために必要なステップについて調べてください。
- デプロイ済み Web サービスを管理します。
Web サービス・アプリケーションを開発すると、セキュリティー設定の構成、デプロイメント記述子および WSDL 文書の表示、Web サービス・ポートの有効範囲の設定、ポリシー・セットおよびサービス・プロバイダーの管理を行うことができます。このタスクは、管理コンソールまたはコマンド行ツールを使用して実行できます。
- Web サービスの保護。
- WSDL ファイルをパブリッシュします。
Web サービス・アプリケーションをインストールし、オプションでエンドポイント情報を変更したら、更新済みエンドポイント情報を含む Web サービス記述言語 (WSDL) ファイルが必要になる場合があります。この情報が使用可能になるよう WSDL ファイルをパブリッシュするために必要なステップについて調べてください。
- Web サービス・アプリケーションのパフォーマンスをモニターします。
Performance Monitoring Infrastructure (PMI) を使用して Web サービス要求を処理するのに必要な時間を計算する方法について調べてください。
- Web サービスのトラブルシューティングを行います。
Web サービスを開発、実装、および使用するためのさまざまなプロセス (コマンド行ツール、Java コンパイル・エラー、クライアント・ランタイム・エラーおよび例外、シリアライゼーションおよびデシリアライゼーション・エラー、Web Services Security での認証の要求および許可の失敗を含みます) のトラブルシューティングを行う方法について調べてください。
例
以下の例では、ビジネスでの Web サービス使用方法を示します。
フラワー・ショップのオーナーが、Web
を介した顧客からの注文の受け取りを開始したいと思っています。オーナーは、花の卸売り業者を探し、商品の価格を決定し、今後の花の注文に関する契約を締結することによってプロセスを開始します。
フラワー・ショップのオーナーは、Web サービスを使用して花の卸売り業者を探すことができます。新しい卸売り業者を探す 1 つの方法は、Universal Description, Discovery and Integration
(UDDI) レジストリーを使用して、潜在的な卸売り業者を検索することです。
供給業者を選択すると、レジストリーから、フラワー・ショップのオーナーの基準を満たす花の流通業者への連絡方法に関する情報が返されます。
フラワー・ショップのオーナーは、潜在的な各供給業者の
WSDL ファイルを取得することにより、各供給業者の価格表を要求することができます。WSDL は、供給業者の Web ページからダウンロードすることも、E メールで受信することも、または供給業者の UDDI レジストリー・エントリーから検索することもできます。
WSDL
は、プロシージャー呼び出しを記述します。アプリケーション・サーバーを使用する場合、プロシージャー呼び出しは JAX-RPC または JAX-WS プロシージャー呼び出しです。
これらのプロシージャー呼び出しタイプは、いずれも価格表を検索します。
WSDL ファイルでは、要求が送信される Universal Resource Locator も指定します。
フラワー・ショップのオーナーは、各供給業者から受け取った価格を比較して、どの供給業者と取引するかを決定し、将来の注文についての準備を行う必要があります。
これで、フラワー・ショップは、Web サービスを使用して最適な価格について供給業者とやり取りし、注文プロセスを完了することにより、Web を通じて商品を販売できるようになりました。商品の価格表を Web サイトにパブリッシュし、顧客が花を注文するためのメカニズムが必要になります。
花の供給業者の Web サービス・クライアントは、フラワー・ショップのサーバーにデプロイされます。
顧客が Web を通じて花を購入する取引を行うと、注文がプロシージャー呼び出しを介して供給業者に送信されます。
供給業者は、注文番号および配送日とともに確認を送信することで応答します。供給業者は在庫を管理し、フラワー・ショップのオーナーは料金請求とカスタマー・オーダーの管理を処理します。
同様に、フラワー・ショップのカタログも各供給業者のカタログから自動的に作成することができます。
供給業者が顧客に直接配送する場合は、注文トラッキング照会を供給業者の注文トラッキング・システムに直接渡すことができます。
供給業者は、Web サービスを使用して、フラワー・ショップの注文に関する送り状を送信することができます。以前は手書きで用紙に記入して、ファックスや郵便で送信する必要があったプロセスは、自動的に行えるようになり、フラワー・ショップと供給業者の両方が人件費を節約することができます。
Web サービスを利用すると、フラワー・ショップがはるかに大きな在庫を用意できるというメリットがあります。
商品の保守に手間をかけることなく、フラワー・ショップは、他の方法ではそろえることができない商品を顧客に提供することができます。
Web を介して花を販売すると、別の店舗を出したり追加商品に投資したりする負担を負わずに、フラワー・ショップの資本を増やすことができます。
詳しいシナリオについては、Web サービス・シナリオ概要
を参照してください。そこには、Plants by WebSphere という
架空の園芸用品オンライン・ショップについての説明と、そこで Web サービスの概念がどのように取り込まれているかについての説明があります。
JAX-WS および JAX-RPC Web サービスを示すその他のサンプルについては、インフォメーション・センターのサンプル・セクションを参照してください。