我想知道Java RMI服务器API中是否存在某些类型的回调机制。我想要实现的是我接到一个关于以下事件的电话:
RMI本身运行良好,我也知道RMI的日志记录可能性。但我有兴趣更深入地了解服务器的运行方式,创建一些统计数据等。
当然,一种可能性是为我的每个远程对象的方法添加方法调用,但这很难看,因为我的统计部分独立于所提供功能的实际实现。
答案 0 :(得分:2)
方法调用的回调是相当直接的,只是java.lang.reflect.Proxy
的应用程序。
然而,RMI在连接和断开连接事件方面遇到了很多麻烦。你将无法在没有太多麻烦的情况下找到那些,并且由于客户端连接池,事件不会像你想象的那样显露出来。您必须实现一个RMIClientSocketFactory,它在套接字创建时提供回调,并返回一个在close()
上提供回调的包装套接字,并且当从服务器下载RMIClientSocketFactory时,您还必须为所有人设计一个方法此代码可供您的客户端访问,以便它可以注册其回调。仅后者本身并不重要。