package be.dnsbelgium.rdap.sample;
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.bio.SocketConnector;
import org.mortbay.jetty.webapp.WebAppContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.util.Date;
public class StartJetty {
private final static Logger logger = LoggerFactory.getLogger(StartJetty.class);
public static void main(String[] args) {
startWebApp();
}
public static void startWebApp() {
Server server = new Server();
SocketConnector connector = new SocketConnector();
connector.setMaxIdleTime(1000 * 60 * 60);
connector.setSoLingerTime(-1);
connector.setPort(3030);
server.setConnectors(new Connector[]{connector});
WebAppContext webAppContext = new WebAppContext();
webAppContext.setServer(server);
String path = "sample/src/main/webapp";
path = findWarPath(path);
System.out.println("path = " + path);
webAppContext.setWar(path);
server.addHandler(webAppContext);
try {
String msg = "http://localhost:3030/";
log("Starting " + msg + " (please wait)...");
server.start();
log("Started " + msg);
System.out.println("PRESS ANY KEY TO STOP");
while (System.in.available() == 0) {
Thread.sleep(5000);
}
log("Stopping the webapp...");
webAppContext.stop();
log("The webapp was stopped.");
server.stop();
server.join();
} catch (Exception e) {
e.printStackTrace();
System.exit(100);
}
}
private static void log(String message) {
String msg = String.format("%tT : %s", new Date(), message);
logger.info(msg);
System.out.println(msg);
}
public static String findWarPath(String warPath) {
if (warPath == null) {
return null;
}
if (!new File(warPath).exists()) {
return findWarPath(shortenPath(warPath));
} else {
return warPath;
}
}
private static String shortenPath(String path) {
int indexOfSlash = path.indexOf("/");
if (indexOfSlash != -1) {
return path.substring(indexOfSlash + 1);
} else {
return null;
}
}
}