Business Components for Javaフレームワークによって、層と層の間の通信に関する処理がすべて行われます。EJBまたはCORBAアーキテクチャに過度にプロジェクト・リソースを使用するかわりに、ローカルまたはWebモジュールにデプロイする場合と同様にアプリケーションを作成でき、フレームワークによって透過的にリモート・デプロイメントを処理できます。
層と層の間の通信について詳細まで知る必要はありませんが、リモート・デプロイメントの理解に役立つように、フレームワークでのリモート・デプロイメントの処理方法を次に簡単に説明します。
ビジネス・コンポーネントをリモートにデプロイする場合、oracle.jbo.server
クラス(ApplicationModuleImpl
およびViewObjectImpl
など)はビジネス・ロジック層にのみ存在します。クライアントは、oracle.jbo.client.remote
のサブパッケージ内のクライアント側のクラスを使用して、ビジネス・コンポーネントのメソッドにアクセスします。たとえば、アプリケーション・モジュールのセッションBeanとしてビジネス・コンポーネントをデプロイする場合は、クライアントはoracle.jbo.client.remote.ejb
パッケージを使用します。
クライアントが、リモートにデプロイされたビジネス・コンポーネントのインタフェースのメソッドをコールすると、クライアント・パッケージの実装クラスによってそのメソッドが実行されます。このオブジェクトは、ワイヤ・プロトコルを介して、ビジネス・ロジック層上のoracle.jbo.server.remote
のサブパッケージ(たとえばoracle.jbo.server.remote.ejb
)内のクラスにコールを渡します。次に、このクラスは、oracle.jbo.server
の実装クラスにコールを渡します。
このような内部処理について考慮する必要はありません。クライアント・アプリケーションは、通常のJavaコールを使用してoracle.jbo.ApplicationModule
をコールします。
リモートにデプロイしたフレームワーク実装クラスがクライアント層で利用できないのと同様に、リモートにデプロイしたカスタム実装クラスも利用できません。クライアントがカスタム・メソッドにアクセスできるようにするには、メソッドをエクスポートして層に依存しないインタフェースを作成する必要があります。次に、アプリケーション・モジュールをリモート対応にすると、JDeveloperによって、インタフェースを実装するクライアント側のクラスが別に作成されます。
クライアントが、リモートにデプロイされたビジネス・コンポーネントのインタフェースのカスタム・メソッドをコールすると、そのメソッドは、クライアント・パッケージの実装クラスに自動的に渡されます。このクラスは、ワイヤ・プロトコルを介して、ビジネス・ロジック層上の実装クラスにコールを渡します。
クライアントではワイヤ・プロトコルについて考慮する必要はありません。クライアントでは、通常のJavaコールを使用してmypackage.common.MyAppModule
をコールするだけです。