1

Java RMI サーバー API に何らかのコールバック メカニズムがあるかどうか疑問に思っていました。私が達成したいのは、次のようなイベントで呼び出しを受けることです。

  • 開いた接続
  • メソッドが呼び出されました
  • 閉じた接続
  • ...

RMI 自体は正常に動作し、RMI のロギングの可能性についても知っています。しかし、サーバーがどのように機能するか、統計を作成する方法などについてより多くの洞察を得ることに興味があります.

もちろん、リモート オブジェクトの各メソッドにメソッド呼び出しを追加することも 1 つの可能性ですが、統計の部分は提供された機能の実際の実装とは無関係であるため、これは見苦しいものです。

4

1 に答える 1

2

メソッド呼び出しのコールバックはかなり簡単で、java.lang.reflect.Proxy.

ただし、RMI は、接続および切断イベントからユーザーを隔離するために多くの問題を抱えています。非常に多くの問題を抱えていなければ、それらにアクセスすることはできません。また、クライアント側の接続プーリングのために、イベントはとにかくあなたが考えるほど多くを明らかにしません. ソケットの作成時にコールバックを提供する RMIClientSocketFactory を実装する必要があり、これは でコールバックを提供するラップされたソケットを返しますclose()。また、RMIClientSocketFactory がサーバーからダウンロードされるため、このすべてのコードにアクセスできるようにする方法も考案する必要があります。コールバックを登録できるように、クライアントに送信します。後者だけでは自明ではありません。

于 2012-09-26T02:09:20.023 に答える