【问题标题】:Java RMI server: method to be called on eventsJava RMI 服务器:在事件上调用的方法
【发布时间】:2012-09-25 11:47:24
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你不能用 AOP 来实现它,并将关注点与远程对象分开吗?
  • 虽然是一种有趣的方法,但 AOP 并不能满足我的需求。

标签: java rmi


【解决方案1】:

方法调用的回调相当简单,只是java.lang.reflect.Proxy 的一个应用程序。

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

【讨论】:

  • 我担心答案听起来像那样......让我们等一下,也许其他人会想出一些花哨的东西,否则我会接受你的答案。无论如何,我会看看代理 API。谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-03-09
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-05
相关资源
最近更新 更多