Java Business Integration (JBI) は、JSR 208 仕様の実装であり、サービス指向アーキテクチャー (SOA) を実装する 1 つの方法として開発されました。JBI は、サービスプロバイダ (サービスの提供側)、サービスコンシューマ (サービスの消費側) のどちらかまたは両方の役割を果たすプラグインコンポーネントを提供する環境を定義します。各プラグインコンポーネントは、WSDL (Web Services Description Language) 2.0 に直接基づいたサービスモデルを使用して相互に作用します。
Java CAPS では、次の 4 種類の JBI (Java Business Integration) コンポーネントを利用します。
サービスエンジン: JBI 実行環境内でローカルにサービスを提供または消費し、ビジネスロジック、処理、変換、ルーティングなどのサービスを使用できるようにします。たとえば、1 つのサービスエンジンで長時間のビジネスプロセスを実行しながら、その他のサービスエンジンでデータ変換サービスや高機能の EDI (Electronic Data Interchange) サービスを提供できます。
結合コンポーネント: トランスポートや通信にプロトコルの独立性を提供します。HTTP や SOAP などの特定のプロトコルを使用してリモートサービスにアクセスし、それらのサービスを JBI 正規化メッセージルーターに配置します。結合コンポーネントは、メッセージをそれらの特定のプロトコルから XML に変換したり、XML から特定のプロトコルに再度変換したりします。この処理は正規化および非正規化と呼ばれます。メッセージを正規化すると、ほかの JPI コンポーネントが NMR からそれらのメッセージにアクセスできるようになります。結合コンポーネントは、HTTP、JMS およびその他の特定の外部プロトコル用に特殊化されています。これにより、どの JBI コンポーネントも、JBI 実行環境に配備された結合コンポーネントから使用できる任意のプロトコルまたはトランスポートを介して通信できます。それらのプロトコルをビジネスロジックに個別に実装する必要はありません。
結合コンポーネントは、特定の外部プロトコル用に特殊化されています。これにより、どの JBI コンポーネントも、JBI 実行環境に配備された結合コンポーネントから使用できる任意のプロトコルまたはトランスポートを介して通信できます。それらのプロトコルをビジネスロジックに個別に実装する必要はありません。
共用ライブラリ: 2 つ以上の JBI コンポーネントで使用できる Java クラスを提供します。たとえば、Sun WSDL ライブラリは、複数の異なる結合コンポーネントで共有できます。
サービスアセンブリ: コンポーネントがサービスを提供および消費する方法を設定するための特定のアプリケーションアーティファクトを提供します。たとえば、目的のサービスを提供するように Java EE サービスエンジンを設定するには、EAR ファイルを使用できます。このような一連の関連アーティファクトを、サービスアセンブリと呼びます。サービスアセンブリに含まれる各アプリケーションアーティファクトは「サービスユニット」と呼ばれます。サービスアセンブリには、各サービスユニットをどの JBI コンポーネントに配備するかを定義する設定情報が含まれます。たとえば、前述の EAR ファイルと、別のアプリケーションアーティファクトである SOAP バインディング設定データ (SOAP クライアントがサービスを利用できるようにするために使用される) によって、サービスアセンブリ内のサービスユニットを構成します。アセンブリは、使用できる状態になったら、JBI 環境に配備されます。JBI 環境では、各サービスユニットが、そのサービスユニットを使用する適切な JBI コンポーネントに自動的に分配されます。サービスアセンブリは、通常、NetBeans IDE などで提供される開発ツール環境で作成および配備されます。
たとえば、前述の EAR ファイルと、別のアプリケーションアーティファクトである HTTP バインディング設定データ (SOAP クライアントがサービスを使用できるようにするために使用される) によって、サービスアセンブリ内のサービスユニットを構成します。アセンブリは、使用できる状態になったら、JBI 環境に配備されます。JBI 環境では、各サービスユニットが、そのサービスユニットを使用する適切な JBI コンポーネントに自動的に分配されます。
Java CAPS では、サービスアセンブリは、通常、NetBeans IDE などで提供される開発ツール環境で作成および配備されます。次の図は、拡張 NetBeans JBI マネージャーと、4 種類の JBI コンポーネントを示しています。
JBI コンポーネント、サービスアセンブリ、およびサービスユニットは、それぞれが、JBI 管理ツールによって制御されるライフサイクル状態を持ちます。サービスユニットのライフサイクル状態は、サービスアセンブリによって間接的に管理されます。ライフサイクル状態には、「インストール済み」「停止済み」、「起動済み」、「シャットダウン」、「配備」などがあります。
JBI 実行時サーバーは、JBI コンポーネントのライフサイクル状態を保持します。アプリケーションサーバーがシャットダウンしてから再起動した場合、JBI コンポーネントは、アプリケーションサーバーがシャットダウンした時点のライフサイクル状態に戻ります。
JBI ランタイムは、JBI コンポーネントを「望ましい」状態に戻そうとします。たとえば、JBI コンポーネントを起動しようとしたのに、コンポーネントでエラーが発生したために起動できなかったとします。その場合、アプリケーションサーバーを再起動すると、JBI ランタイムはそのコンポーネントを起動を再試行します。