捕获 Wildfly 关闭钩子
Capture Wildfly shutdown hook
在独立的 java 应用程序中,很容易知道您的应用程序何时关闭
public class ShutDownHook
{
public static void main(String[] args)
{
Runtime.getRuntime().addShutdownHook(new Thread()
{
public void run()
{
System.out.println("Shutdown Hook is running !");
}
});
System.out.println("Application Terminating ...");
}
}
在 Wildfly 应用程序服务器中捕获此事件的选项是什么?
一种可能是使用 ServletContextListener。这是 Web 应用程序中的一个 class,用于侦听 Web 应用程序 的启动 (contextInitialized
) 和关闭 (contextDestroyed
) 事件 。您的代码类似于:
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class MyServletContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("Application Terminating ...");
}
}
这不是您想要的 100%,因为如果安装它的 webapp 未部署,例如,Wildfly 仍然 运行ning 但您的 webapp 不是。但是,如果您的环境只有一个 webapp,或者如果您可以将此代码放入必须 运行ning 的 webapp 中,那么这将正常工作。请注意,这是标准的 JEE 代码,因此您可以 运行 在任何支持 servlet 的容器中使用它。
在独立的 java 应用程序中,很容易知道您的应用程序何时关闭
public class ShutDownHook
{
public static void main(String[] args)
{
Runtime.getRuntime().addShutdownHook(new Thread()
{
public void run()
{
System.out.println("Shutdown Hook is running !");
}
});
System.out.println("Application Terminating ...");
}
}
在 Wildfly 应用程序服务器中捕获此事件的选项是什么?
一种可能是使用 ServletContextListener。这是 Web 应用程序中的一个 class,用于侦听 Web 应用程序 的启动 (contextInitialized
) 和关闭 (contextDestroyed
) 事件 。您的代码类似于:
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class MyServletContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("Application Terminating ...");
}
}
这不是您想要的 100%,因为如果安装它的 webapp 未部署,例如,Wildfly 仍然 运行ning 但您的 webapp 不是。但是,如果您的环境只有一个 webapp,或者如果您可以将此代码放入必须 运行ning 的 webapp 中,那么这将正常工作。请注意,这是标准的 JEE 代码,因此您可以 运行 在任何支持 servlet 的容器中使用它。