2012-04-13 10 views
3

以下は、相手側のRMIサーバーがオンラインであるかどうかを確認するための静的メソッドです。私は基本的に、それが本当の場合は接続がオンであることを意味するメソッドを呼び出しますそれは何かが間違っていることを意味する例外を与えます。それを行うより良い方法はありますか?そして、プロセスをスピードアップするより良い方法はありますか?接続があれば値が速く返されますが、そうでない場合はいつかかかります。RMI接続を確認するより良い方法

public static boolean checkIfOnline(String ip,int port) 
{ 
    boolean online = false; 
    try { 

    InetAddress ipToConnect; 
    ipToConnect = InetAddress.getByName(ip); 

    Registry registry = LocateRegistry.getRegistry(ipToConnect.getHostAddress(),port); 
    ServerInterface rmiServer = (ServerInterface)registry.lookup("ServerImpl"); 

    online = rmiServer.checkStudentServerOnline(); 

    if(online) 
    { 
     System.out.println("Connected to "+ipToConnect); 
    } 

    } catch (RemoteException e) { 

     System.out.println(e.getMessage()); 
     //e.printStackTrace(); 
     return false; 
    } catch (NotBoundException e) { 
     System.out.println(e.getMessage()); 
     //e.printStackTrace(); 
     return false; 
    } catch (UnknownHostException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return online; 

} 
+2

あなたの 'ping'のようなアプローチは私にとって妥当と思われます。 – Anonymous

答えて

3

任意のリソースが利用可能であるかどうかをテストするための最良の方法は、それを使用しようとするだけです。それが成功するか失敗するかは、利用できなかった(または何かが間違っていた)ことを伝えます。

事前に追加コードを実行することに基づくアプローチは、未来を予測することに過ぎません。その中には、間違ったことをテストしたり、テストと使用状況の間でステータスが変化したりするなど、いくつかの問題があります。

関連する問題