WebSphere Application Server V6 SIBus入門
掲載日:2006年06月14日(水)
更新日:2006年06月20日(火)
WebSphere Application Server(以下、WAS) V6から、SIBus(サービス統合バス)という機能が提供されました。V6発表以降、技術詳細や手順についての技術資料がWebSphere Developer Domainでも公開されています(本ページ末尾の「参考資料 」を参照)。SIBusはWASだけではなく、他のIBMソフトウェア製品でも内部的に使用されるようになり、「SIBusとは何でしょうか?」といった声を耳にします。
当記事は、SIBusについて知りたいけれど、「概要資料では何ができるのかよくわからない」「でも、技術資料じゃ難しすぎる」といったかた向けに記述しました。
SIBusの基本機能は、大きく以下の3つに分けられます。
メッセージング・エンジン
SIBWS(Webサービスの使用可能化)
メディエーション
これらの機能について、それぞれどのようなことができるかを中心に説明します。
また、“SIBus”という用語については、日本語で“サービス統合バス”と訳されたり、管理コンソール上では単に“バス”と記載されたりしますが、当記事では“SIBus”という表現に統一します。
SIBusの基本機能のひとつが「メッセージング・エンジン(ME)」です。アプリケーション・サーバーをSIBusのメンバーとして登録すると、アプリケーション・サーバー上にメッセージング・エンジン、つまりJavaベースの非同期通信基盤が構成されます。
SIBus上には、メッセージの送信先として「宛先」を定義します。この宛先の実体は、メッセージング・エンジン上に作成されます。
具体的に宛先は、JMSのキュー、トピックに相当し、WASの管理コンソールから、SIBusや宛先をJMSリソースとして定義することで、WAS上のJMSアプリケーションは宛先に対してメッセージを送受信することができます。
例えば、SIBus上の宛先(キュー)にメッセージをJMSで送信すると、WASの管理コンソールから、以下のようにメッセージング・エンジン上のキューにメッセージが溜まっている状況を見ることができます。
一般的な非同期通信基盤が提供するメッセージの信頼性に応じた管理を、SIBusのメッセージング・エンジンも同様に提供します。そのため、メッセージング・エンジンではメッセージを保持させるメッセージストア(ファイルあるいはデータベース)を必要とします。
また、SIBusは、他のSIBus上のメッセージング・エンジンやWebSphere MQと接続すする機能も提供します。この場合、「宛先」の実体は、メッセージング・エンジン上のキュー、トピックではなく、他のSIBus上やWebSphere MQキューマネージャー上のキューになります。アプリケーションは、宛先の実体が何であるかを意識せず、メッセージの送受信を行うことができます。
考慮点
ここまでの説明を読んで、“SIBus = WebSphere MQのJava版”と考えた方もいらっしゃるかと思います。SIBusでは、WebSphere MQの全ての機能をサポートしてはいません。例えば、SIBusはWMQクラスターに参加できません。
その他、WebSphere MQとの違いについては、WAS V6.1 InfoCenterの「WebSphere MQ functions not supported by service integration(英語) 」のページにも記述されておりますので、ご覧ください。
SIBusの二つめの機能として、「Service Integration Bus Web Service Enablement (Webサービスの使用可能化。以下、SIBWS。)」があります。このコンポーネントは文字通り、SIBusにWebサービスアクセス機能を提供するもので、内部の通信には前述のメッセージング・エンジンが使用されています。
SIBWSはWebサービスクライアントとWebサービスの間に配置し、外部Webサービスの隠蔽や、後ほど説明するメディエーションの機能を提供します。
SIBWS内部では以下の2つのコンポーネントが提供されています。(実際はもう少し細かくコンポーネントがわかれますが、当記事ではわかりやすくするために、2つにしています。)
インバウンド・サービス
クライアント側に見せるWebサービスを提供し、クライアントからのメッセージを受け取ります。受け取ったメッセージはインバウンド・サービス用の宛先に送信されます。また応答メッセージ用に、インバウンド・サービス用のリプライ宛先も作成されます。
アウトバウンド・サービス
外部のWebサービスを呼び出します。アウトバウンド・サービス用の宛先が作成され、宛先経由で外部のWebサービスが呼び出されます。
インバウンド・サービス用の宛先から、アウトバウンド・サービス用の宛先へ、メッセージを転送することで、Webサービスクライアントは外部のWebサービスを呼び出すことが出来るようになります。
例えば、外部Webサービスが複数存在し、アウトバウンド・サービスが複数定義されている場合、メッセージの転送先(ルーティング先)を変更することによって、呼び出すWebサービスを切り替えることができるようになります。
SIBWSの機能はデフォルトではWAS上に構成されていません。そのため、SIBWSを使用する場合は、SIBWSコンポーネントの初期導入が必要です。また、SIBWSには、WebサービスのWSDLの情報を保管するSDOリポジトリー用にデータベースが必要になります。
最後は「メディエーション」です。ここまでの説明でおわかりかと思いますが、SIBusを流れるメッセージはJMS、SIBWSでも、「宛先」を経由します。
宛先を経由するメッセージには、メディエーション(仲介)を行うことができます。具体的には、メッセージに対して、以下の操作を行えます。
メッセージ内容の参照/追加/補完
別宛先あるいは複数宛先へのメッセージのルーティング
SIBus上を流れるメッセージに付加されているルーティング情報を変更します
メッセージ・フォーマット変換
Webサービス(SOAPメッセージ)やJMSのメッセージ・フォーマットの変換ができます
WASの管理コンソールで、メディエーションを宛先に登録します。宛先を通過するメッセージに登録されたメディエーションが適用されます。
SIBusのメディエーションを開発するには、コーディングが必要です 。メッセージにアクセスするために、IBM固有のAPI(com.ibm.websphere.sib.mediation.*)が提供されています。このAPIを理解し、メディエーション処理の全てをコーディングするのは、手間がかかりますが、その一方で、追加したい機能を自由にメディエーションの中にコーディングすることも可能になります。
静的なルーティングであれば、コーディングではなく、管理コンソールから設定ができます。(宛先の「デフォルトの転送ルーティング・パス」「応答宛先」で設定します。)Webサービスの場合であれば、メッセージの操作は、SIBusのメディエーションではなく、JAX-RPCハンドラーを使用するという選択もあります。要件に応じた機能を選択してください。
SIBusのメディエーション開発に興味があるかたは、WAS V6 SIBus 構成ガイド の「3. メディエーション」も参考にしてください。
また、メディエーション機能を提供する製品に、WebSphere Enterprise Service Bus(以下、WebSphere ESB)という製品もあります。メディエーション開発にコーディングが必要なSIBusに対して、WebSphere ESBは別製品であるWebSphere Integration Developerという開発ツールにより、GUIベースでのメディエーション開発が可能です。
WebSphere ESBについてご興味があるかたは、WebSphere Enterprise Service Bus V6アナウンスメント・ワークショップ資料 や超入門!WebSphere ESB をご覧ください。
以上、SIBusの基本的な3つの機能「メッセージング・エンジン」「SIBWS」「メディエーション」について説明しました。
特に、「メッセージング・エンジン」については、今後、WASの非同期通信の基盤として定着していくのではないかと思います。