1

我正在 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");
4

0 回答 0