我正在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参考。 那么最好的方法是什么?在客户端GUI属性中将RMI属性存储为静态,将新JFrame存储为内部类?或者为新的JFrame创建另一个类,但它需要一个新的
Phonebook phonebook = (Phonebook) Naming.lookup("rmi://"+registryhost+"/Phonebook");