【发布时间】:2016-10-25 21:19:25
【问题描述】:
我正在编写一个使用 RMI 连接工厂的应用程序,以便在调用远程方法之前在客户端设置超时。我想这样做,以便客户端可以在放弃和放弃调用之前等待对远程方法的调用一段预定的时间。
我创建了一个套接字工厂来促进这种机制。我使用UnicastRemoteObject.exportObject(Remote, int, RMIServerSocketFactory, RMIClientSocetFactory) 创建远程存根,以便客户端可以将存根与自定义的套接字工厂一起使用——两个设备都知道其类定义。
客户端的套接字工厂需要在调用服务器之前设置超时。客户端决定此超时的长度。我可以制作一个以这种方式工作的套接字工厂。但是,我似乎无法在客户端确保远程存根具有此自定义套接字工厂,因此我无法确保客户端套接字工厂将创建一个超时的客户端套接字。
我想知道是否有一种方法可以像我设想的那样工作 Remote.getClientFactory() 应该工作?在我看来,这似乎是 RMI 规范未涵盖的一个明显功能。在没有这种方法的情况下,是否有任何常用的“hack”来检索客户端上的客户端套接字工厂,以便可以指定超时?
【问题讨论】: