Metro はハイパフォーマンスかつ拡張可能な、しかも簡単に使えるウェブサービススタックです。
簡単な hello world のようなウェブサービスから、.NET サービスを起動する、高信頼性、高セキュリティを求められる、トランザクションを伴うウェブサービスまで、あなたのウェブサービスに必要となるものすべてを提供する、まるでワンストップ・ショップのようです。
Metro ウェブサービススタックは GlassFish communityの一部ですが、GlassFish がなくても使用することができます。
説明を表示したい画像をクリックしてください。
Metro はいくつかのトランスポートと、異なるサービスに対して効率的な通信手段を提供する関連技術を備えています。
- HTTP トランスポート
-
Metro は、HTTP クライアントとしても HTTP サーバーとしても動作できます。この HTTP サービスはどんなサーブレット・コンテナの内部でも、JavaSE6 のどんなところでも実行できます。
- MTOM and 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 ではウェブサービス開発時の信頼性のチューニングは NetBeans の信頼性パネル内にあるチェックボックスで行ないます (以下のスクリーンショットを参照してください)。
アトミックなトランザクションは、あるトランザクション境界内のすべての操作が整合性のある手続きのなかで成功もしくは失敗したかを保証する方法としてよく知られています。ひとつの操作でも失敗したら、他のオペレーションもすべて中断されます。トランザクションサポートは、数年来、IIOP 呼び出し (IIOP invocations) 用に Java Enterprise Edtion で利用可能になっています。
Metor はウェブサービス向けトランザクションのサポートを可能にします。
Metro の相互運用可能なアトミック・トランザクションは、WS-Coordination 仕様と WS-AtomicTransaction 仕様を実装したものです。
いままで、ウェブサービスはトランスポート上に構築されたセキュリティ (例えば 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 はウェブサービス以外でも利用可能な、さまざまな非依存のライブラリの上に構築されています。それには以下のものが含まれます:
- JAXB RI データ束縛 (databiding) レイヤ
- SAAJDOM から SOAP メッセージのアクセス
- Woodstox 効率的な XML 解析
- XML stream buffer 効率的な infoset バッファリング
Metro はシームレスに Spring と統合することができます。これは開発者に、Spring の機能というメリットと学習にかかるオーバーヘッドを減らせるというふたつの効果を同時にもたらします。さらに...
Metro は、SOAP を使わない REST なウェブサービスや、XML を使わない JSON サービスの開発にも使えます。あなたがプログラムを書くのは一度だけということを、Metro はこれら、すべての環境のなかで証明するでしょう。