我有一個Spring應用程序,並使用Tomcat開發它並在服務器上運行它。我非常沮喪的部署 - >取消部署 - >再次部署 - > ..開發過程中,所以我決定切換到嵌入式Jetty。所以基本上現在我只是一個單一的Java類,這是負責啓動在我的服務器:啓動嵌入式Jetty服務器作爲後臺進程
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類?
好的,所以我最終做的就是放棄通過代碼自己啓動服務器,而是設置Maven來處理我的所有包裝和構建。所以至少現在將應用程序部署到生產服務器並不是那麼痛苦。我可能會在後面看看那個nohup,因爲已經有很多話題了。 – semonte