1

GUI を使用して、RMI でセキュリティで保護された電話帳を開発しています。

私の質問は、RMI 自体よりもクライアント GUI のクラス構造に関連しています。

したがって、基本的に、接続ボタンをクリックすると、私のGUIは最初にログイン/パスワードを使用してJFrameを開き、認証に問題がなければ、別のJFrameが開かれ、電話帳の内容が表示されます。しかし、すべてを内部クラスと同じ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