package voldemort.server;
import static voldemort.utils.Utils.croak;
import org.apache.log4j.Logger;
/**
* Daemon class for use with the jsvc wrapper.
* <p>
* Simple example usage:
* <p>
*
* <pre>
* jsvc -pidfile ./voldemort.pid voldemort.server.VoldemortJsvcDaemon
* </pre>
* <p>
* The above assumes that JAVA_HOME, CLASSPATH, and VOLDEMORT_HOME have all been
* exported.
* <p>
* A more detailed example might be:
*
* <pre>
* jsvc \
* -Xmx2G \
* -pidfile /var/run/voldemort.pid \
* -errfile "&1" \
* -outfile /var/log/voldemort.out \
* -user voldemort \
* -Dcom.sun.management.jmxremote \
* -Dlog4j.configuration=file:///etc/voldemort/log4j.properties \
* voldemort.server.VoldemortJsvcDaemon /etc/voldemort
* </pre>
*
* See <a href="http://commons.apache.org/daemon/jsvc.html">Commons Daemon</a>
* documentation for more info.
*
*
*/
public class VoldemortJsvcDaemon {
private static final Logger logger = Logger.getLogger(VoldemortServer.class.getName());
private VoldemortServer server = null;
public void init(String[] args) throws Exception {
VoldemortConfig config = null;
try {
if(args.length == 0)
config = VoldemortConfig.loadFromEnvironmentVariable();
else if(args.length == 1)
config = VoldemortConfig.loadFromVoldemortHome(args[0]);
else if(args.length == 2)
config = VoldemortConfig.loadFromVoldemortHome(args[0], args[1]);
else
croak("USAGE: java " + VoldemortJsvcDaemon.class.getName()
+ " [voldemort_home_dir] [voldemort_config_dir]");
} catch(Exception e) {
logger.error(e);
croak("Error while loading configuration: " + e.getMessage());
}
server = new VoldemortServer(config);
}
public void start() {
if(!server.isStarted())
server.start();
}
public void stop() {
if(server.isStarted())
server.stop();
}
public void destroy() {
}
}