package org.wiztools.restclient.server; import java.util.logging.Logger; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; /** * * @author subwiz */ public class TraceServer { private static final Logger LOG = Logger.getLogger(TraceServer.class.getName()); public static final String SYS_PROPERTY_PORT = "rc:trace-server-port"; public static final int DEFAULT_PORT = 10101; public static final int PORT; private static final Server server; static{ // Set the port int port = 0; try{ String t = System.getProperty(SYS_PROPERTY_PORT); if(t != null){ int t_port = Integer.parseInt(t); if(t_port > 65535 || t_port < 0){ LOG.warning(SYS_PROPERTY_PORT + " is not in valid port range. Reverting to default:" + DEFAULT_PORT); port = DEFAULT_PORT; } else{ port = t_port; } } else{ // System property not supplied, use default port port = DEFAULT_PORT; } } catch(NumberFormatException ex){ LOG.warning(SYS_PROPERTY_PORT + " is not a number. Reverting to default: " + DEFAULT_PORT); port = DEFAULT_PORT; } PORT = port; // Create the server object server = new Server(PORT); // Attach the trace servlet ServletContextHandler ctx = new ServletContextHandler(); ctx.setContextPath("/"); server.setHandler(ctx); ctx.addServlet(new ServletHolder(new TraceServlet()), "/*"); server.setStopAtShutdown(true); } public static synchronized void start() throws Exception{ if(!(server.isStarted() || server.isRunning())){ server.start(); } } public static boolean isRunning(){ return server.isRunning() || server.isStarted(); } public static synchronized void stop() throws Exception{ server.stop(); } }