Java 远程接口阻止使用我的 GUI

Java remote interface blocks the use of my GUI

我已经提供了一个银行应用程序,我应该对其进行修改,以便在每个 GUI 屏幕上更新帐户余额。在我的示例中,这应该使用 RMI(Observable) 来完成。我已经完成了这项工作,至少,我几乎可以肯定这一点。

有一个名为 IBankingSession 的远程接口。 这个 REMOTE 接口应该有一个像 setGUI(BankSessionController) 或类似的方法。但是,这是不可能的,因为 JavaFX 部分不是 SerializableIBankingSession 与 GUI 没有任何关系。 我怎样才能 link 一个 IBankingSession 的实例到这个 GUI?所以我可以从这个实例更新 GUI 吗?在REMOTE接口里弄个setGUI这样的方法也感觉怪怪的。因为 GUI 当然与创建会话的屏幕在同一屏幕上。

我很好奇一些好主意。提前致谢。

IBankingSession session = desk.logIn(tfAccount.getText(), tfPassword.getText());

首先:您不想 link 您的 "remote" 东西直接发送给使用它的本地客户。那个 IBankingSession 对您的客户想要使用 JavaFx 在用户屏幕上放置一些东西这一事实一无所知。

相反,尝试这样的事情:定义一个允许回调的接口(换句话说:某种 "push" 模型):

客户端向远程服务器注册;告诉它:"I am interested in balance updates".

然后,在 "balance" 更新后,远程服务将该信息推送到每个客户端。

现在每个客户都会收到通知;然后可以决定如何处理传入的更新;例如更新一些 JavaFx UI 组件;或者,将它们记录到一些持久存储中 - 为您提供一种可能对各种不同用例有用的机制。

你根本不应该使用 observables,当然也不应该通过网络。

就 RMI 而言,您应该极力避免任何具有客户端回调性质的事情。有防火墙问题、延迟问题、连接问题……每一种可能导致您的客户端失败的事情。

你需要彻底重新考虑这一点。这不是一个可行的设计。