Metro は、高性能で拡張性があり、とても利用しやすい Web サービススタックです。
シンプルな hello world Web サービスから、.NET サービスと連携する、信頼性があり安全で、そしてトランザクション処理をする Web サービスまで、Web サービスに関する様々な要求をこれ1つで実現することができます。
Metro Web サービススタックは GlassFish communityの一部分ではありますが、GlassFish 以外でも利用することは可能です。
上記画像をクリックし、詳細を見てください。
Metro はいくつかのトランスポートと、異なるサービスに対して効率的な通信手段を提供する関連技術を備えています。
- HTTP トランスポート
-
Metro は、HTTP クライアントとしても HTTP サーバーとしても動作できます。この HTTP サービスはどんなサーブレット・コンテナの内部でも、JavaSE6 のどんなところでも実行できます。
- MTOM と XOP
-
これらの仕様は、SOAP 1.2 ペイロード内での XML コンテンツのバイナリ・エンコーディングの最適化を可能にします。ドキュメントコンテンツはどんなバイナリ・エンコーディングへもシリアライズすることが可能でありながら、XML 構造はテキストベースの "XML 情報セット" マニフェストの中に保持されます。
これらの仕様は、XML コンテンツを MIME のボディパートとしてエンコーディングすることと、関連する XML 情報セット宣言とともにカプセル化して SOAP 1.2 のエンベロープでくるむことを可能にします。さらに、仕様ではバイナリ・エンコードされた XML ボディを直接 HTTP パケット内にカプセル化する方法も規定しています。つまり、結果として、XML のサイズが小さくなり、より良好な通信が得られる、ということになります。
- SOAP/TCP
-
SOAP over TCP トランスポートは
FastInfoset を使用して、SOAP メッセージの効率的な送信を可能にします。
Metro のトランスポートのサポートは拡張可能です。in-VM トランスポート, JMS トランスポート, SMTP トランスポート などを含め、他のトランスポートも利用可能です。
Metro の信頼性は、送信中に失われたり順番が入れ替わったりしたメッセージによって引き起こされる障害から基盤システムを確実に復旧できるようにします。障害復旧は、消費者 (consumer) アプリケーションや、提供者 (provider) アプリケーションのコードを実行することなく、下層の基盤システムによって行なわれます。
相互運用可能な信頼性は、WS-ReliableMessaging 仕様に基づき実装、実現しています。Metro では Web サービス開発時の信頼性のチューニングを NetBeans の信頼性パネル内にあるチェックボックスで行ないます (以下のスクリーンショットを参照してください)。
アトミックなトランザクションは、あるトランザクション境界内のすべての操作が整合性のある手続きで成功したか、もしくは失敗したかを確実に保証する方法としてよく知られています。ひとつでも操作が失敗したら、他のオペレーションもすべて中断されます。トランザクションサポートは、数年来、IIOP 呼び出し (IIOP invocations) 用に Java Enterprise Edtion で利用可能になっています。
Metor は Web サービス向けトランザクションのサポートを可能にします。
Metro の相互運用可能なアトミック・トランザクションは、WS-Coordination 仕様と WS-AtomicTransaction 仕様を実装したものです。
いままで、Web サービスはトランスポート上に構築されたセキュリティ (例えば SSL) に頼って、ポイント-ポイント間でのセキュリティを提供していました。Metro は WS-Security 仕様を実装しており、間に仲介者がいたとしても相互運用可能なメッセージの整合性と機密性を提供します。つまり WS-Security はトランスポートをベースしたセキュリティに依存しません。WS-Security は、現在もまだ利用されているであろうトランスポート・セキュリティに付け加えられた、Metro が提供するセキュリティオプションのひとつなのです。Metro は、WS-Security で使われるセキュリティ・トークンを、発行したり、延長したり、あるいは検証したりするための仕組みである WS-Trust 仕様の実装も備えています。セキュリティ・トークンとは信頼関係を交渉、確立するためのものです。
Metro の core 部分は、JAX-WS API を実装しており、上位レベルの機能 (higher-lebel features) をプラグインする基盤としての役割を持ちます。この層での拡張性は、使用する機能のパフォーマンスや難しさに対して支払った労力に見合った結果が得られる、いわゆる "pay as you go" (負担と結果が見合う) モデルを可能にします。
また、core 部分は WS-I Basic Profile, WS-I Attachment Profile, WS-Addressing といった基本的な相互運用のための機能も提供します。
Metro は Web サービス以外の場面でも利用可能な、さまざまな非依存のライブラリの上に構築されています。それには以下のものが含まれます:
- JAXB RI データ束縛 (databiding) レイヤ
- SAAJDOM からの SOAP メッセージのアクセス
- Woodstox 効率的な XML 解析(パージング)
- XML stream buffer 効率的な infoset バッファリング
Metro はシームレスに Spring と統合することができます。これは開発者に、Spring の機能と学習にかかるオーバーヘッドを減らせるというふたつの効果を同時にもたらします。さらに...
Metro は、SOAP を使わない REST な Web サービスや、XML を使わない JSON サービスの開発にも使えます。あなたがプログラムを書くのは一度だけということを、Metro はこれら、すべての環境のなかで証明するでしょう。