package org.atomnuke.service.jetty;
import org.atomnuke.container.service.annotation.NukeService;
import org.atomnuke.lifecycle.InitializationException;
import org.atomnuke.service.ServiceContext;
import org.atomnuke.service.jetty.server.ContextBuilder;
import org.atomnuke.service.jetty.server.JettyServer;
import org.atomnuke.service.jetty.version.VersionServlet;
import org.atomnuke.service.runtime.AbstractRuntimeService;
import org.eclipse.jetty.servlet.ServletHolder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author zinic
*/
@NukeService
public class JettyService extends AbstractRuntimeService {
private static final Logger LOG = LoggerFactory.getLogger(JettyService.class);
private final JettyServer jettyServer;
public JettyService() {
super(ContextBuilder.class);
jettyServer = new JettyServer();
}
@Override
public Object instance() {
return jettyServer.getContextBuilder();
}
@Override
public void init(ServiceContext context) throws InitializationException {
try {
jettyServer.start(Integer.parseInt(context.environment().fromEnv("JETTY_PORT", "8080")));
// Version servlet
final ServletHolder servletHolder = new ServletHolder(new VersionServlet());
jettyServer.getContextBuilder().newContext("/_version").addServlet(servletHolder, "/*");
} catch (Exception ex) {
throw new InitializationException(ex);
}
}
@Override
public void destroy() {
try {
jettyServer.stop();
} catch (Exception ex) {
LOG.error(ex.getMessage(), ex);
}
}
}