Java 远程接口阻止使用我的 GUI
Java remote interface blocks the use of my GUI
我已经提供了一个银行应用程序,我应该对其进行修改,以便在每个 GUI 屏幕上更新帐户余额。在我的示例中,这应该使用 RMI(Observable) 来完成。我已经完成了这项工作,至少,我几乎可以肯定这一点。
有一个名为 IBankingSession
的远程接口。
这个 REMOTE 接口应该有一个像 setGUI(BankSessionController)
或类似的方法。但是,这是不可能的,因为 JavaFX 部分不是 Serializable
。 IBankingSession
与 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 而言,您应该极力避免任何具有客户端回调性质的事情。有防火墙问题、延迟问题、连接问题……每一种可能导致您的客户端失败的事情。
你需要彻底重新考虑这一点。这不是一个可行的设计。
我已经提供了一个银行应用程序,我应该对其进行修改,以便在每个 GUI 屏幕上更新帐户余额。在我的示例中,这应该使用 RMI(Observable) 来完成。我已经完成了这项工作,至少,我几乎可以肯定这一点。
有一个名为 IBankingSession
的远程接口。
这个 REMOTE 接口应该有一个像 setGUI(BankSessionController)
或类似的方法。但是,这是不可能的,因为 JavaFX 部分不是 Serializable
。 IBankingSession
与 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 而言,您应该极力避免任何具有客户端回调性质的事情。有防火墙问题、延迟问题、连接问题……每一种可能导致您的客户端失败的事情。
你需要彻底重新考虑这一点。这不是一个可行的设计。