Java Business Integration

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

Java Business Integration(略称JBI)とは、エンタープライズ・サービス・バス(英: Enterprise service bus、ESB)をJavaで実装する方法を示したフレームワークである。

コンポーネント[編集]

JBI 1.0では、ESBのバスにあたるノーマライズメッセージルータやバスにつながるコンポーネントのうち、メッセージ変換やメッセージルーティングのようにESB内部に作用するコンポーネントをサービスエンジン、SOAPJMSのような通信プロトコルを用いてESBの外部との接続の窓口となるコンポーネントをバインディングコンポーネントと定義している。 これらの2種類のコンポーネントは、JBI仕様の中でインタフェースが決められており、その実装クラスとコンポーネント名などを記述したjbi.xmlという配備記述子を封入したJARファイルであり、誰でも作ることができるので、独自の通信プロトコルや機能を実装できる。しかし、一般ユーザが実装するには難しく、現実にはベンダー製のもの、あるいはオープンソースで実装されるのを待たなければならないのもまた事実である。

サービスアセンブリ[編集]

JBIではコンポーネントエンドポイント名、サービス名、インタフェース名、オペレーション名、その他コンポーネント独自の設定を与えてコンポーネントを活性化させ、インスタンスを起動させるものを「サービスアセンブリ」と定義している。 サービスアセンブリは、前述した設定事項をWSDL1.1/2.0(タグを拡張する部分はコンポーネントごとに独自形式)やコンポーネントが独自に読み込む設定ファイルに書き込み、既定の形でZIPファイルに封入し、JBIコンテナに配備するという方法で運用する。このように、理論的には実装クラスとサービスを独立なライフサイクルで扱えるのがJBIの利点と言える。

ノーマライズメッセージルータを流れるメッセージは「メッセージエクスチェンジ」と呼ばれるものであり、内容はJavaのプロパティの塊そのものであり、その中にWebサービスではなじみ深いエンドポイント名、サービス名、インタフェース名(PortType)、オペレーション名、ノーマライズメッセージ、その他のプロパティを書き込み、これをメッセージルータにsendすることで、指定したエンドポイントに運ばれる。なお、ノーマライズメッセージは、(javax.xml.transform.Source)と定義されたコンテント、(javax.activation.DataHandler) と定義された添付ファイル、その他のプロパティで構成され、おおよそSOAPメッセージの形式を継承したような設計になっている。コンテントはXMLが入るが、Sourceになっていることにより、DOMSAXStAXなどのあらゆるAPIでの処理が可能になっている。しかし、経由するコンポーネントでのXML処理方法を統一していなければ、DOM、SAX、Streamのどの形式のインスタンスでメッセージが来ても処理できるようにしておく必要がある。

各社対応[編集]

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