У меня есть приложение spring-boot web
для распространения в виде файла jar
.Код для запуска приложения выглядит следующим образом:
private static ConfigurableApplicationContext ctx;
public static void main(String[] args){
if(ctx == null) {
ctx = SpringApplication.run(MyApplication.class, args);
}
try {
openHomePage("http://localhost:8090/");
}catch(Exception e) {
logger.error("Error occured starting the application: ", e);
ctx.close();
}
}
private static void openHomePage(String url) throws IOException, URISyntaxException {
if(Desktop.isDesktopSupported()) {
URI homePage = new URI(url);
Desktop.getDesktop().browse(homePage);
}else {
Runtime runtime = Runtime.getRuntime();
runtime.exec(new String[]{"cmd", "/c","start chrome " + url});
}
}
, который открывает домашнюю страницу в Chrome
, как при запуске из Eclipse
, так и при двойном щелчке по файлу jar
.
Проблема в том, что когда я запускаю приложение из файла jar
и закрываю вкладку браузера, приложение продолжает работать в JVM
, и мне приходится убивать его из task manager
вручную, что раздражает,Если я не убью JVM
и снова дважды не нажму на файл jar, приложение не запустится автоматически, как в первый раз, и мне придется вручную открыть новую вкладку браузера и набрать http://localhost:8090/ для использования приложения.
Можно ли убить каждый процесс после того, как пользователь закроет вкладку браузера, чтобы при следующем щелчке по файлу JAR в следующий раз, когда ему нужно было использовать приложение, появилась новая вкладка браузераоткрывается автоматически?
Заранее спасибо ..