[java,zookeeper]2.1 KeeperState.SyncConnected linker
1. Watcher1自身实现 Watcher 接口,传入 this
[*]package org.apache.zookeeper.demo;
[*]
[*]import java.util.concurrent.CountDownLatch ;
[*]
[*]
[*]import org.apache.zookeeper.WatchedEvent;
[*]import org.apache.zookeeper.Watcher;
[*]import org.apache.zookeeper.Watcher.Event.* ;
[*]import org.apache.zookeeper.ZooKeeper ;
[*]
[*]/**
[*] * Created by root on 6/28/15.
[*] */
[*]public class SyncConnect_Event_Tester implements Watcher // Watcher 1
[*]{
[*] ZooKeeper zk = null ;
[*]
[*] final String CONNECTION_STRING = "127.0.0.1:2181" ;
[*]
[*] final int SESSSION_TIMER = 2000 ;
[*]
[*] private CountDownLatch connectedSemaphore = new CountDownLatch( 1 ) ;
[*]
[*] public SyncConnect_Event_Tester ()
[*] {
[*] try
[*] {
[*]
[*] zk = new ZooKeeper ( CONNECTION_STRING , SESSSION_TIMER , this);
[*] this.connectedSemaphore.await () ;
[*] }
[*] catch ( Exception e )
[*] {
[*] e.printStackTrace();
[*] }
[*] }
[*]
[*] public void process ( WatchedEvent we )
[*] {
[*] try
[*] {
[*] Event.KeeperState keeperState = we.getState() ;
[*]
[*] System.out.println (we.getState().toString()) ;
[*]
[*] if (keeperState == Event.KeeperState.SyncConnected )
[*] {
[*] System.out.println (" success connect to ZooKeeper Server ") ;
[*]
[*] connectedSemaphore.countDown();
[*] }
[*] }
[*] catch ( Exception ex )
[*] {
[*]
[*] }
[*] }
[*]
[*]
[*] public static void main ( String [] args )
[*] {
[*] SyncConnect_Event_Tester tester = new SyncConnect_Event_Tester() ;
[*] }
[*]}
[*]
2. Watcher2
另创建一个类实现 Watcher, 传入该类的实例对象
[*]package org.apache.zookeeper.demo;
[*]
[*]import java.util.concurrent.CountDownLatch ;
[*]
[*]
[*]import org.apache.zookeeper.WatchedEvent;
[*]import org.apache.zookeeper.Watcher;
[*]import org.apache.zookeeper.Watcher.Event.* ;
[*]import org.apache.zookeeper.ZooKeeper ;
[*]
[*]/**
[*] * Created by root on 6/28/15.
[*] */
[*]public class SyncConnect_Event_Tester implements Watcher // Watcher 1
[*]{
[*] ZooKeeper zk = null ;
[*]
[*] final String CONNECTION_STRING = "127.0.0.1:2181" ;
[*]
[*] final int SESSSION_TIMER = 2000 ;
[*]
[*] private CountDownLatch connectedSemaphore = new CountDownLatch( 1 ) ;
[*]
[*] public SyncConnect_Event_Tester ()
[*] {
[*] try
[*] {
[*]
[*] WatcherLoader w = new WatcherLoader( this.connectedSemaphore ) ;
[*]
[*] zk = new ZooKeeper (CONNECTION_STRING , SESSSION_TIMER , w ) ; // this is for the Watcher 2
[*] this.connectedSemaphore.await () ;
[*]
[*] }
[*] catch ( Exception e )
[*] {
[*] e.printStackTrace();
[*] }
[*] }
[*]
[*] public static void main ( String [] args )
[*] {
[*] SyncConnect_Event_Tester tester = new SyncConnect_Event_Tester() ;
[*] }
[*]}
[*]
[*]class WatcherLoader implements Watcher
[*]{
[*] private CountDownLatch countDownLatch ;
[*]
[*] public WatcherLoader ( CountDownLatch countDownLatch )
[*] {
[*] this.countDownLatch = countDownLatch ;
[*] }
[*]
[*] public void process ( WatchedEvent e) {
[*] try
[*] {
[*] Event.KeeperState keeperState = e.getState() ;
[*]
[*] if (keeperState == Event.KeeperState.SyncConnected )
[*] {
[*] System.out.println (" success connect to ZooKeeper Server ") ;
[*] countDownLatch.countDown();
[*]
[*]
[*] }
[*] }
[*] catch ( Exception ex )
[*] {
[*] // ignore
[*] }
[*] }
[*]}
3. Watcher3
直接在 ZooKeeper 构造方法的 Watcher 参数中创建一个 Watcher 接口实例,并在 Watcher 内部编写 process 方法。
[*]package org.apache.zookeeper.demo;
[*]
[*]import java.util.concurrent.CountDownLatch ;
[*]
[*]
[*]import org.apache.zookeeper.WatchedEvent;
[*]import org.apache.zookeeper.Watcher;
[*]import org.apache.zookeeper.Watcher.Event.* ;
[*]import org.apache.zookeeper.ZooKeeper ;
[*]
[*]/**
[*] * Created by root on 6/28/15.
[*] */
[*]
[*]public class SyncConnect_Event_Tester implements Watcher // Watcher 1
[*]{
[*] ZooKeeper zk = null ;
[*]
[*] final String CONNECTION_STRING = "127.0.0.1:2181" ;
[*]
[*] final int SESSSION_TIMER = 2000 ;
[*]
[*] private CountDownLatch connectedSemaphore = new CountDownLatch( 1 ) ;
[*]
[*] public SyncConnect_Event_Tester ()
[*] {
[*] try
[*] {
[*] // this is for the Watcher 3
[*] zk = new ZooKeeper ( CONNECTION_STRING , SESSSION_TIMER , new Watcher ()
[*] {
[*] public void process ( WatchedEvent e )
[*] {
[*] try
[*] {
[*] Event.KeeperState keeperState = e.getState() ;
[*]
[*] if (keeperState == Event.KeeperState.SyncConnected )
[*] {
[*] System.out.println (" success connect to ZooKeeper Server ") ;
[*] connectedSemaphore.countDown();
[*] }
[*] }
[*] catch ( Exception ex )
[*] {
[*] // ignored
[*] }
[*] }
[*] }) ;
[*] this.connectedSemaphore.await () ;
[*]
[*] }
[*] catch ( Exception e )
[*] {
[*] e.printStackTrace();
[*] }
[*] }
[*]
[*]
[*] public static void main ( String [] args )
[*] {
[*] SyncConnect_Event_Tester tester = new SyncConnect_Event_Tester() ;
[*] }
[*]}
[*]
4. Watcher4
类似于第三种方法,创建 Watcher 实例,需要的时候将该实例传入到参数中.
[*]package org.apache.zookeeper.demo;
[*]
[*]import java.util.concurrent.CountDownLatch ;
[*]
[*]
[*]import org.apache.zookeeper.WatchedEvent;
[*]import org.apache.zookeeper.Watcher;
[*]import org.apache.zookeeper.Watcher.Event.* ;
[*]import org.apache.zookeeper.ZooKeeper ;
[*]
[*]/**
[*] * Created by root on 6/28/15.
[*] */
[*]public class SyncConnect_Event_Tester implements Watcher // Watcher 1
[*]{
[*] ZooKeeper zk = null ;
[*]
[*] final String CONNECTION_STRING = "127.0.0.1:2181" ;
[*]
[*] final int SESSSION_TIMER = 2000 ;
[*]
[*] Watcher watcher ;
[*]
[*] private CountDownLatch connectedSemaphore = new CountDownLatch( 1 ) ;
[*]
[*] public SyncConnect_Event_Tester ()
[*] {
[*] try
[*] {
[*] // this is for the Watcher 4
[*] this.watcher = new Watcher () {
[*] public void process(WatchedEvent e) {
[*] try
[*] {
[*] Event.KeeperState keeperState = e.getState() ;
[*]
[*] if (keeperState == Event.KeeperState.SyncConnected )
[*] {
[*] System.out.println (" success connect to ZooKeeper Server ") ;
[*] connectedSemaphore.countDown();
[*] }
[*] }
[*] catch ( Exception ex )
[*] {
[*] // ignored
[*] }
[*] }
[*] } ;
[*]
[*]
[*] zk = new ZooKeeper (CONNECTION_STRING, SESSSION_TIMER , this.watcher) ;
[*]
[*] this.connectedSemaphore.await () ;
[*]
[*]
[*] }
[*] catch ( Exception e )
[*] {
[*] e.printStackTrace();
[*] }
[*] }
[*]
[*] public static void main ( String [] args )
[*] {
[*] SyncConnect_Event_Tester tester = new SyncConnect_Event_Tester() ;
[*] }
[*]}
[*]
end
页:
[1]