当前位置:  开发笔记 > 编程语言 > 正文

使用JMX停止Apache Tomcat

如何解决《使用JMX停止ApacheTomcat》经验,为你挑选了1个好方法。

有没有办法停止使用Java和JMX的Apache Tomcat?

我想有一个托管bean可以用于此吗?



1> Babl..:

通过它自己的Tomcat没有能够关闭运行的运行JMX,基本上它不安全!但如果你真的需要它,你需要创建自己的ShutdownMBean.MBean在应用程序部署中创建和注册它是非常容易和直接的过程.让我们首先创建ShutdownMBean具有名称的whch,并将公开单个doShutdown()操作.

public interface ShutdownMBean {
    void doShutdown();
    String getName();
}

实现也很简单,只需将SHUTDOWN信号发送到Tomcat的默认关闭端口即可.

public class Shutdown implements ShutdownMBean{

    @Override
    public void doShutdown() {
        try {
            Socket clientSocket = new Socket("localhost", 8005);
            clientSocket.getOutputStream().write("SHUTDOWN".getBytes());
            clientSocket.getOutputStream().close();
            clientSocket.close();
        } catch (IOException e) {
        }
    }

    @Override
    public String getName() {
        return "Shutdown JMX Hook";
    }

}

最后只注册ShutdownMBean后上下文初始化(我假设你使用的是Tomcat 7+):

@WebListener
public class ShutdownListener implements javax.servlet.ServletContextListener{

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {

    }

    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        try {
            ShutdownMBean shutdownMBean = new Shutdown();
            MBeanServer server = ManagementFactory.getPlatformMBeanServer();
            ObjectName name = new ObjectName("com.example:type=Shutdown");
            server.registerMBean(shutdownMBean, name);
        } catch (InstanceAlreadyExistsException | MBeanRegistrationException | NotCompliantMBeanException | MalformedObjectNameException e) {
        }
    }
}

多数民众赞成,只需部署您的应用程序,使用连接到您的Tomcat JConsole,您将doShutdowncom.example组下找到操作

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有