Имам приложение Spring и използвах Tomcat, за да го разработя и стартирам на сървъра. Бях доста разочарован от процеса на разработка deploy->undeploy-->deploy again-->.., така че реших да премина към вграден Jetty. Така че по същество сега имам само един Java клас, който отговаря за стартирането на моя сървър:
public class MainServer {
private Server start() throws Exception {
Server jetty = new Server();
String[] configFiles = { "WebContent/WEB-INF/jetty.xml" };
for (String configFile : configFiles) {
XmlConfiguration configuration = new XmlConfiguration(new File(configFile).toURI().toURL());
configuration.configure(jetty);
}
WebAppContext appContext = new WebAppContext();
File warPath = new File("WebContent");
appContext.setWar(warPath.getAbsolutePath());
appContext.setClassLoader(Thread.currentThread().getContextClassLoader());
appContext.setContextPath("/4d");
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { appContext, new DefaultHandler() });
jetty.setHandler(handlers);
jetty.start();
jetty.join();
return jetty;
}
public static void main(String[] args) {
try {
new MainServer().start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Това е идеално за разработка, тъй като позволява гореща смяна и изглежда по-бързо. Бих искал обаче да разположа тази настройка на моя сървър по-късно. Кой е най-добрият начин да стартирате този сървър и да го стартирате във фонов режим (като Tomcat startup.sh)? Как трябва да извикам този клас MainServer?