我正在 RMI 中开发一个带有 GUI 的安全电话簿。
我的问题与客户端 GUI 的类结构有关,而不是与 RMI 本身有关。
所以基本上,当您单击“连接”按钮时,我的 GUI 首先会打开一个带有登录名/密码的 JFrame,如果身份验证正常,则会打开另一个 JFrame 并显示电话簿的内容。但我不知道是否需要将所有内容与 Inner 类放在同一个 java 文件中,或者使用新的 JFrame 创建一个新类。这可能是一个选择问题,但我希望以正确的方式。最重要的是,我不知道在哪里获得电话簿 RMI 参考资料更好
public class ClientGui extends JFrame {
private static final String registryhost= "localhost:1099";
private static final long serialVersionUID = 1L;
//Several attributes
public ClientGui() {
//Creation of components and a Connect Button
}
private class ButtonConnect implements ActionListener {
public void actionPerformed(ActionEvent ae)
{
try {
Phonebook phonebook = (Phonebook) Naming.lookup("rmi://"+registryhost+"/Phonebook");
Customer customerInstance = phonebook.checkCredential(login, password);
if(customerInstance!=null) {
CustomerPage page=new CustomerPage();
page.setVisible(true);
JLabel label = new JLabel("Welcome");
page.getContentPane().add(label);
}
} catch (RemoteException e3) {
//blabla
}
}
}
public static void main(String args[])
{
try
{
ClientGui frame=new ClientGui();
frame.setVisible(true);
}
catch(Exception e)
{JOptionPane.showMessageDialog(null, e.getMessage());}
}
}
如您所见,单击连接按钮时会收到电话簿参考。但我认为这不是一个好主意,因为新的 Jframe 也必须使用这个 RMI 参考。那么最好的方法是什么?将 RMI 属性作为静态存储在客户端 GUI 属性中,并将新的 JFrame 作为内部类存储?或者为新的 JFrame 创建另一个类,但它需要一个新的
Phonebook phonebook = (Phonebook) Naming.lookup("rmi://"+registryhost+"/Phonebook");