/** * To create a ZooKeeper client object, the application needs to pass a connection string * containing a comma separated list of host:port pairs, each corresponding to a ZooKeeper server. * * <p>Session establishment is asynchronous. This constructor will initiate connection to the * server and return immediately - potentially (usually) before the session is fully established. * The watcher argument specifies the watcher that will be notified of any changes in state. This * notification can come at any point before or after the constructor call has returned. * * <p>The instantiated ZooKeeper client object will pick an arbitrary server from the * connectString and attempt to connect to it. If establishment of the connection fails, another * server in the connect string will be tried (the order is non-deterministic, as we random * shuffle the list), until a connection is established. The client will continue attempts until * the session is explicitly closed. * * <p>Added in 3.2.0: An optional "chroot" suffix may also be appended to the connection string. * This will run the client commands while interpreting all paths relative to this root (similar * to the unix chroot command). * * @param connectString comma separated host:port pairs, each corresponding to a zk server. e.g. * "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002" If the optional chroot suffix is used the * example would look like: "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002/app/a" where the * client would be rooted at "/app/a" and all paths would be relative to this root - ie * getting/setting/etc... "/foo/bar" would result in operations being run on "/app/a/foo/bar" * (from the server perspective). * @param sessionTimeout session timeout in milliseconds * @param watcher a watcher object which will be notified of state changes, may also be notified * for node events * @throws IOException in cases of network failure * @throws IllegalArgumentException if an invalid chroot path is specified */ public ZooKeeper(String connectString, int sessionTimeout, Watcher watcher) throws IOException { LOG.info( "Initiating client connection, connectString=" + connectString + " sessionTimeout=" + sessionTimeout + " watcher=" + watcher); watchManager.defaultWatcher = watcher; cnxn = new ClientCnxn(connectString, sessionTimeout, this, watchManager); cnxn.start(); }
/** * To create a ZooKeeper client object, the application needs to pass a connection string * containing a comma separated list of host:port pairs, each corresponding to a ZooKeeper server. * * <p>Session establishment is asynchronous. This constructor will initiate connection to the * server and return immediately - potentially (usually) before the session is fully established. * The watcher argument specifies the watcher that will be notified of any changes in state. This * notification can come at any point before or after the constructor call has returned. * * <p>The instantiated ZooKeeper client object will pick an arbitrary server from the * connectString and attempt to connect to it. If establishment of the connection fails, another * server in the connect string will be tried (the order is non-deterministic, as we random * shuffle the list), until a connection is established. The client will continue attempts until * the session is explicitly closed (or the session is expired by the server). * * <p>Added in 3.2.0: An optional "chroot" suffix may also be appended to the connection string. * This will run the client commands while interpreting all paths relative to this root (similar * to the unix chroot command). * * <p>Use {@link #getSessionId} and {@link #getSessionPasswd} on an established client connection, * these values must be passed as sessionId and sessionPasswd respectively if reconnecting. * Otherwise, if not reconnecting, use the other constructor which does not require these * parameters. * * @param connectString comma separated host:port pairs, each corresponding to a zk server. e.g. * "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002" If the optional chroot suffix is used the * example would look like: "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002/app/a" where the * client would be rooted at "/app/a" and all paths would be relative to this root - ie * getting/setting/etc... "/foo/bar" would result in operations being run on "/app/a/foo/bar" * (from the server perspective). * @param sessionTimeout session timeout in milliseconds * @param watcher a watcher object which will be notified of state changes, may also be notified * for node events * @param sessionId specific session id to use if reconnecting * @param sessionPasswd password for this session * @throws IOException in cases of network failure * @throws IllegalArgumentException if an invalid chroot path is specified */ public ZooKeeper( String connectString, int sessionTimeout, Watcher watcher, long sessionId, byte[] sessionPasswd) throws IOException { LOG.info( "Initiating client connection, connectString=" + connectString + " sessionTimeout=" + sessionTimeout + " watcher=" + watcher + " sessionId=" + sessionId + " sessionPasswd=" + (sessionPasswd == null ? "<null>" : "<hidden>")); watchManager.defaultWatcher = watcher; cnxn = new ClientCnxn(connectString, sessionTimeout, this, watchManager, sessionId, sessionPasswd); cnxn.start(); }
/** * Specify the default watcher for the connection (overrides the one specified during * construction). * * @param watcher */ public synchronized void register(Watcher watcher) { watchManager.defaultWatcher = watcher; }