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");