Web サービス入門
このドキュメントでは、NetBeans IDE がサポートする Web サービスの概念と技術の概要を説明します。Web サービスの初心者がチュートリアルを使用する前に読むことを想定しています。
Web サービスは、外部で使用可能な分散アプリケーションコンポーネントです。これらを使用すると、異なる言語で記述されたコンピュータアプリケーションを統合し、異なるプラットフォームで実行できます。Web サービスは、ベンダーが共通の Web サービス標準に同意しているため、言語およびプラットフォームに依存しません。
Sun Microsystems は、Metro という java.net プロジェクトを開発しています。Metro は総合的な Web サービススタックで、「Hello, World!」のような単純なデモから、信頼性のある、セキュリティー保護された、トランザクション方式の Web サービスまで、開発者のすべてのニーズに対応します。詳細については、Metro のホームページを参照してください。
Metro には、WSIT (Web Services Interoperability Technologies) が含まれています。WSIT は、セキュリティー保護、信頼性、メッセージ最適化などの、エンタープライズ機能をサポートしています。WSIT を使用すると、これらの機能を備えた Metro サービスを Microsoft .NET サービスと相互運用できます。Metro の中では、Project Tango が WSIT のコードベースを開発し発展させています。WSIT の仕組みを確認するには、「高度な Web サービス相互運用性」チュートリアルを使用してください。
Web サービス開発者は、複数のプログラミングモデルを使用できます。これらのモデルは、次の 2 つのカテゴリに分類され、どちらも IDE でサポートされています。
- REST ベース。 REpresentational State Transfer は、Web サービスの作成および Web サービスとの通信のための新しい方法です。REST では、各リソースは URI を持ち、HTTP ヘッダーを操作することで制御されます。詳細は、「RESTful Web サービス」を参照してください。
- SOAP/WSDL ベース。従来の Web サービスモデルでは、Web サービスのインタフェースは WSDL ドキュメント (XML の一種) を使用し、この中に URL が含まれていました。そのあとのメッセージ交換は SOAP で行われますが、これも別の種類の XML ドキュメントです。詳細は、「SOAP ベースの Web サービス」を参照してください。
RESTful Web サービス
REST ベース (「RESTful」) の Web サービスは、URI で識別される Web リソースの集まりです。すべてのドキュメントおよび処理は、一意の URI を使用して Web リソースとしてモデル化されます。この Web リソースは、HTTP ヘッダーで指定できるアクションで操作します。SOAP、WSDL、WS-* の標準は使用されません。代わりに、メッセージ交換は、XML、JSON、HTML などいずれの形式でも実行できます。多くの場合、Web ブラウザをクライアントとして使用できます。
HTTP は REST でのプロトコルです。使用できるメソッドは、GET、PUT、POST、および DELETE の 4 つのみです。要求をブックマークしたり、応答をキャッシュしたりできます。ネットワーク管理者は HTTP ヘッダーを見るだけで、RESTful サービスでの処理を簡単に追跡できます。
REST は、HTTP インフラストラクチャーで利用できるセキュリティー機能で十分なアプリケーションや、HTTP がプロトコルとして適しているアプリケーションを使用する場合に適切な技術です。REST サービスは、洗練された機能を実現することもできます。Flickr、Google マップ、および Amazon は、すべて RESTful Web サービスを提供しています。
Project Jersey は、RESTful Web サービス構築のためのオープンソースの参考実装です。Jersey の API は、NetBeans IDE の「RESTful Web サービス」プラグインとして使用できます。
次のチュートリアルでは、REST サービスの作成および使用を扱っています。
SOAP ベースの Web サービス
SOAP ベースの Web サービスでは、Web サービスの Java コードに基づき、Java ユーティリティーで WSDL ファイルが作成されます。WSDL はネット上に公開されます。Web サービスの使用に興味を持っている人が WSDL に基づいた Java クライアントを作成します。メッセージは SOAP 形式で交換されます。SOAP で渡すことができる操作の範囲は、REST で使用できる操作よりもかなり幅広く、特にセキュリティー面で充実しています。
SOAP ベースの Web サービスは、複雑な操作を使用する重量アプリケーションおよび高いセキュリティーや信頼性が必要なアプリケーション、または WS-* 標準をサポートする機能に適しています。HTTP 以外のトランスポートプロトコルを使用する必要がある場合にも適しています。Amazon の Web サービスの多数、特に商取引が関係する部分や、銀行や政府機関が使用する Web サービスは SOAP ベースです。
JAX-WS (Java API for XML Web Services) は Metro の SOAP ベース Web サービスで現在使用されているモデルです。JAX-WS は以前の JAX-RPC モデルに基づいて構築されていますが、注釈など Java EE 5 特有の機能を使用して、Web サービスの開発のタスクが簡略化されています。メッセージ配信用に SOAP を使用しているので、JAX-WS は特定のトランスポートに依存しません。また、WS-Security や WS-ReliableMessaging などの WS-* 仕様のモジュールを幅広くサポートしています。
注: SOAP サービスには JAX-WS モデルを使用することを強くお勧めしますが、IDE では従来サービスに対応するために JAX-RPC Web サービスも引き続きサポートしています。この開発を行うには、「JAX-RPC Web Services」プラグインをインストールします。
次のチュートリアルでは、JAX-WS SOAP ベースの Web サービスの作成および使用を扱っています。