9.2.4.2. リモーティングコールバック
InvocationRequest をクライアントに送信するサーバーによって動作します。サーバー側のコードは、コールバックが同期されているか非同期であるかに関わらず、同じように動作します。クライアントのみが違いを認識する必要があります。サーバーの InvocationRequest は responseObject をクライアントに送信します。これは、クライアントがリクエストしたペイロードです。これは、リクエストまたはイベント通知に直接応答する場合があります。
m_listeners オブジェクトを使用してリスナーも追跡します。これには、サーバーハンドラーに追加されたリスナーの一覧が含まれます。ServerInvocationHandler インターフェースには、この一覧を管理できるメソッドが含まれます。
org.jboss.remoting.InvokerCallbackHandler の実装です。コールバックハンドラーを実装したら、コールバックのリスナーとして自身を追加するか、プッシュコールバックのコールバックサーバーを実装します。
プルコールバック
プル要求の場合、クライアントは Client.addListener() メソッドを使用してリスナーのリストに自身を追加します。その後、サーバーを定期的にポーリングしてコールバックデータの同期配信を行います。このポーリングは Client.getCallbacks() を使用して実行されます。
コールバックのプッシュ
プッシュコールバックでは、クライアントアプリケーションが独自の InvocationHandler を実行する必要があります。そのためには、クライアント自体で Remoting サービスを実行する必要があります。これは コールバックサーバー と呼ばれます。コールバックサーバーは、受信要求を非同期的に受け入れ、要求元(この場合はサーバー)に対して処理します。クライアントのコールバックサーバーをメインサーバーに登録するには、コールバックサーバーの InvokerLocator を 2 つ目の引数として addListener メソッドに渡します。