在春天结束JVM当浏览器选项卡关闭启动应用程序

我有一个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文件需要使用应用程序,自动将打开一个新的浏览器选项卡吗?

原文地址:http://blog.51cto.com/14021402/2329055

时间: 2024-10-07 00:46:06

在春天结束JVM当浏览器选项卡关闭启动应用程序的相关文章

利用session+application+cookie 实现单态登陆,且解决浏览器意外关闭的问题

最近在帮朋友做一个购物网站,里面涉及到了登陆的问题.其中包括后台管理员的登陆和用户的登陆. 在这个网站中,设计了后台管理员单态登陆,即一个账号只能有一个登陆实例.很容易想到的就是用application实现,在application中放置一个hashmap,储存登陆的管理员信息.同时为了实现登陆超时,也在session中存放登陆对象,通过设置session的listener监控session的消亡,移除application中的对象.那么问题来了,如果用户因为断电或者任性,非法关闭了浏览器,再打

selenium高级应用 - 结束Windows中浏览器的进程

结束Windows中浏览器的进程 #-*- coding:utf-8 #结束Windows中浏览器的进程 from selenium import webdriver import unittest class TestDemo(unittest.TestCase): def test_killWindowsProcess(self): #启动浏览器 firefoxDiver = webdriver.Firefox(executable_path="C:\webdriver_firefox_dr

ctrl+c关闭多线程python程序

项目中经常需要用到多线程,如果一个python程序用了多线程,当子线程没有结束时,用ctrl+c是关闭不了主线程的,这时候就只能用kill命令杀掉,这样会很麻烦. 所以探讨了下怎么ctrl+C关闭多线程python程序,也在网上查了很多别人的做法,自己做了很多实验,尝试了很多种方法,总结得出一个能用的方法就是,把子线程setDeamon(True),通过isAlive方法实现join的功能. 代码: #encoding=utf-8 __author__ = '[email protected]'

oracle 各种服务关闭启动

-----------windows环境------------------------------------- 1.监听启动&关闭 lsnrctl start //提示启动监听成功后net start OracleServiceORCL lsnrctl stop //提示启动监听成功后net stop OracleServiceORCL. 2.检查监听器状态 C:\-----\Administrator>lsnrctl status LSNRCTL for 64-bit Windows:

Ubuntu再体验之【浏览器】--Chromium安装拓展程序、安装插件(360极速浏览器插件)

上次谈到了安装Chromium的Flash插件http://blog.csdn.net/rovast/article/details/38476129,有兴趣的同学可以再去看看 这次我们来看看如何安装Chrome插件(或者是360Chrome插件) [转载请注明出处:blog.csdn.net/rovast] 1.为什么要安装插件 在重新折腾上了Ubuntu Kylin 14.04后发现,谷歌被大陆屏蔽了,也就是通过在线安装插件的套路不可用了.但是在使用Windows操作系统的朋友注意到,国产的

通过私有协议在Chrome浏览器网页中打开本地程序

最近甲方有这样一个需求:两套系统,一套基于Chrome开发,一套基于IE开发,想要在Chrome中增加一个链接,然后进入IE开发的系统.也就是说,想要在Chrome中创建链接跳转到IE浏览器指定页面,还要实现跳转动画效果.这个需求我们先来解决从Chrome跳转到IE的问题. 问题分析:从Chrome中跳转到IE,直接以http链接形式是不可能跳转到IE的,只能通过单独开发的本地程序打开IE,问题是如何让Chrome打开该程序.有一种方法可以实现:通过注册私有协议,用户点击链接的时候直接使用私有协

forceStopPackage应用中关闭其他应用程序

android4.0在某应用中关闭其他应用程序:例如关闭打开的闹钟程序: String pakageName = "com.android.BBKClock";  ActivityManager activityMgr; activityMgr = (ActivityManager)mContext.getSystemService( Context.ACTIVITY_SERVICE); activityMgr.forceStopPackage(packageName); 在应用And

无法关闭的QT程序(覆盖closeEvent,新建QProcess并脱离关系)

做一个无法关闭的QT程序(想关闭时要在任务管理器里关闭),看似很难, 其实它并不难,只要让程序在关闭时启动它自身就可以了. 上代码: [cpp] view plaincopyprint? #include <QtGui> class Temp : public QWidget { Q_OBJECT private: QLabel *label; protected: void closeEvent(QCloseEvent *event); public: Temp(QWidget *paren

无法关闭的QT程序——思路开阔一下,原来这么简单!

做一个无法关闭的QT程序(想关闭时要在任务管理器里关闭),看似很难, 其实它并不难,只要让程序在关闭时启动它自身就可以了. 上代码: [cpp] view plaincopyprint? #include <QtGui> class Temp : public QWidget { Q_OBJECT private: QLabel *label; protected: void closeEvent(QCloseEvent *event); public: Temp(QWidget *paren