java - Tomcat servlet 和 JFrame

标签 java jakarta-ee tomcat servlets jframe

我在我的树莓派上运行一个 Tomcat 服务器。当有人浏览我的服务器时,servlet 会启动一个 JFrame,在我的电视(连接到 Pi)上显示一些信息。

这是在 servlet 中的制作方式:

public static JFrame gui;

@Override
public void init() throws ServletException { // super.init() not needed
    if (gui==null) gui = launchUi();
    else if(!gui.isVisible()) gui.setVisible(true);
}

问题是,当我停止服务器时,JFrame 没有关闭。这是我在 Tomcat 日志中找到的内容。

janv. 20, 2014 9:53:18 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/myapp] appears to have started a thread named [AWT-Shutdown] but has failed to stop it. This is very likely to create a memory leak.
janv. 20, 2014 9:53:18 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/myapp] appears to have started a thread named [AWT-EventQueue-0] but has failed to stop it. This is very likely to create a memory leak.

如何强制关闭 JFrame?还是我做错了? (那么正确的方法是什么?) 谢谢

最佳答案

将逻辑实现到 destroy() 方法中:

public void destroy() {
    gui.setVisible(false);
}

关于java - Tomcat servlet 和 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21244147/

相关文章:

JSF 2.0 和 Facelets

java - 类不从 TomCat 上的 Jar 文件加载

java - Tomcat AccessControlException 尽管使用了 AllPermission

java - 从 RESTful Web 服务访问 JSF2 托管 Bean

java - 如何在 Spring MVC 中向 JSP 发送参数并获取更新的参数

java - 如果我使用 Single<> 为什么我不应该使用blockingGet() 以及替代品是什么

java - 如何找到树中的第二大值

java - 使用 java - 在 switch 中使用 if else 语句?

tomcat - 一个jvm中的servlet如何与另一个jvm中的servlet通信

java - 哪些版本的相关技术适用于J2EE 1.4、5和6?