【问题标题】:Standalone application inside tomcatTomcat中的独立应用程序
【发布时间】:2017-05-07 23:31:30
【问题描述】:

我有一个简单的 java 类,我想以编程方式运行。这基本上是一个视频播放器。它还与我的 web 应用程序一起部署在 tomcat 中。这应该在单击特定链接时运行。从控制器,这是我运行它的方式

新线程(() -> { VideoPlayer.main(new String[]{}); }).start();

它工作正常。但是每次我关闭视频播放器时,tomcat 也会终止。有关如何纠正此问题的任何想法?

【问题讨论】:

    标签: java multithreading tomcat web-applications


    【解决方案1】:

    当您关闭它时,您的 GUI 可能会调用 System.exit。这将关闭 Tomcat,因为它们都在同一个 JVM 中运行。找到并删除System.exit,您会发现事情对您来说更有效。

    另请注意,Web 应用程序启动视频播放器没有任何意义。想一想:一旦 Web 应用程序不再在您自己的个人开发工作站上运行,视频将在服务器上播放,而没有人可以观看它。服务器可能甚至没有连接监视器。很可能,您会从视频播放器中收到一系列异常,告诉您它无法自行初始化,因为没有任何图形环境可供启动。

    【讨论】:

    • 你是对的!当我删除这行代码时, videoPanel.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) 关闭播放器后,tomcat 不再终止。但是,该播放器仍在后台运行。有没有办法以编程方式终止这个进程?
    • 另外,我知道这是非常丑陋的方法。我想不出任何解决方案,其中我可以在嵌入 javafx webview 的 Web 应用程序中播放来自 IP 摄像机的实时馈送。 WebView 不支持插件和小程序。这是我发布的一个 SO 问题,其中包含项目stackoverflow.com/questions/41262445/… 的一些详细信息,您可能也想检查并给我一些想法。非常感谢:)
    • 要终止媒体播放器,您必须关闭所有不同的线程。关闭 GUI 线程(它不是守护线程)几乎是不可能的,而且,如果您要启动它,您可能无法重新启动它。最好的策略是启动一个全新的流程,然后继续使用EXIT_ON_CLOSE
    猜你喜欢
    • 2017-07-04
    • 2012-11-03
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    相关资源
    最近更新 更多