Java RMI服务器:要在事件上调用的方法

时间:2012-09-25 11:47:24

标签: java rmi

我想知道Java RMI服务器API中是否存在某些类型的回调机制。我想要实现的是我接到一个关于以下事件的电话:

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

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

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

1 个答案:

答案 0 :(得分:2)

方法调用的回调是相当直接的,只是java.lang.reflect.Proxy的应用程序。

然而,RMI在连接和断开连接事件方面遇到了很多麻烦。你将无法在没有太多麻烦的情况下找到那些,并且由于客户端连接池,事件不会像你想象的那样显露出来。您必须实现一个RMIClientSocketFactory,它在套接字创建时提供回调,并返回一个在close()上提供回调的包装套接字,并且当从服务器下载RMIClientSocketFactory时,您还必须为所有人设计一个方法此代码可供您的客户端访问,以便它可以注册其回调。仅后者本身并不重要。