2016-06-22 19 views
0

私は複数の子を持つベースパスを持っています。アプリケーションの起動時にベースパスとすべての子にウォッチャーを追加しています。キュレーターの時計が有効期限にリセットした後に起動しない

void init(){ 
       List<String> children = zkCfg.getClient().getChildren().usingWatcher(this).forPath(basePath); 
       Stat stat = zkCfg.getClient().checkExists().usingWatcher(this).forPath(basePath); 
       lastKnownVersion.put(basePath.substring(basePath.lastIndexOf('/') + 1), stat.getVersion()); 
       for (String child : children) { 
        stat = zkCfg.getClient().checkExists().usingWatcher(this).forPath(basePath + "/" + child); 
        lastKnownVersion.put(child, stat.getVersion()); 
       } 
} 

ここで、期限切れのEvent in processメソッドをキャッチしています。

このメソッドは有効期限が切れると実行されますが、ノードの変更によってウォッチがトリガーされることはありません。

答えて

0

最後に、自分で解決策を得ました。

代わりに、ノードとそのすべての子ノードのウォッチャーを自分で管理します。使用しているTreecacheは、セッション満了時にもすべてのウォッチャーを管理します。

関連する問題