1

我想知道 Java RMI 服务器 API 中是否有某种回调机制。我想要实现的是,我接到了以下事件的电话:

  • 打开的连接
  • 方法被调用
  • 封闭式连接
  • ...

RMI 东西本身运行良好,而且我也知道 RMI 的日志记录可能性。但我有兴趣更深入地了解服务器的性能、创建一些统计数据等。

一种可能性当然是为我的每个远程对象的方法添加一个方法调用,但这很丑陋,因为我的统计部分独立于所提供功能的实际实现。

4

1 回答 1

2

方法调用的回调相当简单,只是java.lang.reflect.Proxy.

然而,RMI 为使您与连接和断开事件隔离开来麻烦很多。您将无法在没有很多麻烦的情况下找到那些,并且由于客户端连接池,事件不会像您想象的那样显示太多。您必须实现一个 RMIClientSocketFactory ,它在创建套接字时提供回调,并返回一个提供回调 on 的包装套接字close(),并且当从服务器下载 RMIClientSocketFactory 时,您还必须设计一种方法让所有这些代码都可以访问给您的客户,以便它可以注册其回调。仅后者是不平凡的。

于 2012-09-26T02:09:20.023 回答