1

こんにちは、クラスターoamサーバーのどれがオンラインであるかオフラインであるかを監視しようとすると問題が発生します。aSDKのAccessClientクラスのgetServerDiagnosticInfo()メソッドを使用しますが、返されるハッシュテーブルにはキー(サーバーの名前とポート)のみが含まれます)および別のHashTable(HashTableのサブタイプであるObKeyMapVal)を含む値ですが、このオブジェクトには、APIドキュメントに記載されているように、ヘルス、サーバーポート、サーバー名、および接続数が含まれている必要があると思いますが、サイズと内容を印刷すると「0」と[](空)のみを出力します

スニペット:

try{
   AccessClient ac =      AccessClient.createDefaultInstance("/dir",AccessClient.CompatibilityMode.OAM_10G);
   Hashtable info = ac.getServerDiagnosticInfo();
   Set<?> servers = info.keySet();
   Collection<?> serverInfo = info.values();
   System.out.println("Num of servers: " + servers.size());
   Iterator it = servers.iterator();

   Object servidor = null;
   Object dato = null;

   while(it.hasNext()){
     servidor = it.next();
     System.out.println("Server: " + servidor);
     dato = info.get(servidor);
     System.out.println("Data: " + dato);

     ObKeyValMap ob = (ObKeyValMap) dato;
     System.out.println("Size: " + ob.keySet().size());
     System.out.println("Is Empty: " + ob.keySet().isEmpty());
     System.out.println("Properties: " + ob.keySet());
  }

  ac.shutdown();
} catch (oracle.security.am.asdk.AccessException e) {
   e.printStackTrace();
} catch (Exception e){
   e.printStackTrace();
}

そして、次の出力を得ました:

サーバー数: 2

サーバー: myserver1.com5575 データ: {} サイズ: 0 空です: true プロパティ: []

サーバー: myserver2.com5575 データ: {} サイズ: 0 空です: true プロパティ: []

ご協力いただきありがとうございます !!!

4

1 に答える 1

0

getServerDiagnosticInfo() を使用して OAM サーバーのホストとポートを取得したら、telnet を実行してみてください (私は Java の専門家ではありません。次のリンクが役立つ場合があります。How to connect/telnet to SPOP3 server using java (Sockets)? )。サーバーが起動している場合、telnet セッションが確立されます。

于 2014-12-16T14:08:49.777 に答える