blob: 0842f0722cf249fff763d7c07a941599055aa1fb [file] [log] [blame]
package org.apache.s4.tools;
import java.io.File;
import org.I0Itec.zkclient.IDefaultNameSpace;
import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.ZkServer;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.beust.jcommander.Parameter;
import com.beust.jcommander.Parameters;
public class ZKServer {
static Logger logger = LoggerFactory.getLogger(ZKServer.class);
public static void main(String[] args) {
ZKServerArgs zkArgs = new ZKServerArgs();
Tools.parseArgs(zkArgs, args);
try {
logger.info("Starting zookeeper server on port [{}]", zkArgs.zkPort);
if (zkArgs.clean) {
logger.info("cleaning existing data in [{}] and [{}]", zkArgs.dataDir, zkArgs.logDir);
FileUtils.deleteDirectory(new File(zkArgs.dataDir));
FileUtils.deleteDirectory(new File(zkArgs.logDir));
}
IDefaultNameSpace defaultNameSpace = new IDefaultNameSpace() {
@Override
public void createDefaultNameSpace(ZkClient zkClient) {
}
};
ZkServer zkServer = new ZkServer(zkArgs.dataDir, zkArgs.logDir, defaultNameSpace, zkArgs.zkPort);
zkServer.start();
} catch (Exception e) {
logger.error("Cannot initialize zookeeper with specified configuration", e);
}
}
@Parameters(commandNames = "s4 zkServer", separators = "=", commandDescription = "Start Zookeeper server")
static class ZKServerArgs extends S4ArgsBase {
@Parameter(names = "-port", description = "Zookeeper port")
int zkPort = 2181;
@Parameter(names = "-dataDir", description = "data directory", required = false)
String dataDir = new File(System.getProperty("java.io.tmpdir") + File.separator + "tmp" + File.separator
+ "zookeeper" + File.separator + "data").getAbsolutePath();
@Parameter(names = "-clean", description = "clean zookeeper data (arity=0) (make sure you specify correct directories...)")
boolean clean = true;
@Parameter(names = "-logDir", description = "log directory")
String logDir = new File(System.getProperty("java.io.tmpdir") + File.separator + "tmp" + File.separator
+ "zookeeper" + File.separator + "log").getAbsolutePath();
}
}