@Override
    public void serverStarted(Server server) throws Exception {
        final ZooKeeperRegistrationSpec registrationSpec = fillAndCreateNewRegistrationSpec(spec, server);
        if (client.getState() != CuratorFrameworkState.STARTED) {
            client.start();
        }
        client.create()
              .creatingParentsIfNeeded()
              .withMode(registrationSpec.isSequential() ? CreateMode.EPHEMERAL_SEQUENTIAL
                                                        : CreateMode.EPHEMERAL)
              .forPath(znodePath + registrationSpec.path(), registrationSpec.encodedInstance());
    }
Returns a {@link ZooKeeperUpdatingListenerBuilder} with a ZooKeeper connection string and a znode path.

@param zkConnectionStr the ZooKeeper connection string
@param znodePath the ZooKeeper node to register
@param spec the {@link ZooKeeperRegistrationSpec} to encode and register the {@link Server}
zookeeper3/src/main/java/com/linecorp/armeria/server/zookeeper/ZooKeeperUpdatingListener.java