コンテンツにスキップ

Java Business Integration

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。Asmorg (会話 | 投稿記録) による 2007年11月18日 (日) 14:33個人設定で未設定ならUTC)時点の版 (新規追加)であり、現在の版とは大きく異なる場合があります。

(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

JBIとは、エンタープライズ・サービス・バス(英: Enterprise service bus、ESB)をJavaで実装する方法を示したフレームワークである。JBI 1.0では、ESBのバスにあたるノーマライズメッセージルータ、バスにつながるコンポーネントについて、メッセージ変換やメッセージルーティングのようにESB内部に作用するコンポーネントをサービスエンジン、SOAPやJMSのような通信プロトコルを用いてESBの外部との接続の窓口となる部分をバインディングコンポーネントと定義した。これら2種類のコンポーネントは、JBI仕様の中でインタフェースが決められており、その実装クラスとコンポーネント名などを記述したjbi.xmlという配備記述子を封入したJARファイルであり、誰でも作ることができるので、独自の通信プロトコルや機能を実装することができる。しかし、一般ユーザが実装することは難しく、現実にはベンダー製のもの、あるいはオープンソースにより実装されるのを待たなければならないのもまた事実である。 コンポーネントにエンドポイント名、サービス名、インタフェース名、オペレーション名、その他コンポーネント独自の設定を与えて活性化させ、インスタンスを起動させるものが「サービスアセンブリ」と定義されている。サービスアセンブリは、前述した設定事項をWSDL1.1/2.0(タグを拡張する部分はコンポーネントごとに独自形式)やコンポーネントが独自に読み込む設定ファイルに書き込み、既定の形でZIPファイルに封入し、JBIコンテナに配備するという方法で運用する。このように、理論的には実装クラスとサービスを独立なライフサイクルで扱えるのがJBIの利点と言える。 ノーマライズメッセージルータを流れるメッセージは「メッセージエクスチェンジ」と呼ばれるものであり、内容はJavaのプロパティの塊そのものである。その中にWebサービスでおなじみのエンドポイント名、サービス名、インタフェース名(PortType)、オペレーション名、ノーマライズメッセージ、その他のプロパティを書き込み、これをメッセージルータにsendすることで、指定したエンドポイントに運ばれる。なお、ノーマライズメッセージは、javax.xml.transform.Sourceと定義されたコンテント、javax.activation.DataHandler と定義された添付ファイル、その他のプロパティで構成され、おおよそSOAPメッセージの形式を継承したような設計になっている。コンテントはXMLが入るが、Sourceになっていることにより、DOM、SAX、StAXなどのあらゆるAPIでの処理が可能になっている。しかし、経由するコンポーネントでのXML処理方法を統一しないのであれば、DOM、SAX、Streamのどの形式のインスタンスでメッセージが来ても処理できるようにしておかなければならない。

現在、JBIに対応した実装を行っているものとしては、Open ESBWebOTX ESBなどがある。多くのベンダーがESB製品をリリースしているが、JBI対応を掲げているところは少ない。その理由は、仕様策定段階で、IBM、BEAが強烈な反対票を入れていることによるものと考えられ、その状況は最新のJBI 2.0仕様の投票においても変わっていない。