package no.java.incogito.voldemort; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.annotation.Required; import voldemort.*; import voldemort.server.VoldemortConfig; import voldemort.server.VoldemortServer; import java.io.File; /** * @author <a href="mailto:trygve.laugstol@arktekk.no">Trygve Laugstøl</a> * @version $Id$ */ public class VoldemortHomeServerFactoryBean implements FactoryBean, DisposableBean { private static final Logger log = LoggerFactory.getLogger(VoldemortHomeServerFactoryBean.class); private File voldemortHome; private VoldemortServer voldemortServer; @Required public void setVoldemortHome(File voldemortHome) { this.voldemortHome = voldemortHome; } public Object getObject() throws Exception { log.info("Starting Voldemort. Home directory: " + voldemortHome.getAbsolutePath()); // File clusterXml = new File(getClass().getResource("/cluster-it/node-it/config/cluster.xml").toURI().getPath()); // String voldemortHome = clusterXml.getParentFile().getParentFile().getAbsolutePath(); VoldemortConfig config = VoldemortConfig.loadFromVoldemortHome(voldemortHome.getAbsolutePath()); voldemortServer = new VoldemortServer(config); voldemortServer.start(); return voldemortServer; } public Class getObjectType() { return VoldemortServer.class; } public boolean isSingleton() { return true; } public void destroy() throws Exception { if (voldemortServer != null) { try { voldemortServer.stop(); } catch (VoldemortException e) { // ignore, voldemort always throws an exception } } } }