[英]Stop Apache Tomcat using JMX
有沒有辦法停止使用Java和JMX的Apache Tomcat?
我想有一個托管bean可以用於此嗎?
通過它自己的Tomcat沒有能夠從JMX
關閉操作運行,基本上它不安全! 但如果你真的需要它,你需要創建自己的ShutdownMBean
。 這是創建MBean
並在應用程序部署時注冊它的非常簡單和直接的過程。 讓我們首先創建ShutdownMBean
它將具有名稱並將公開單個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) {
}
}
}
多數民眾贊成,只需部署您的應用程序,使用JConsole
連接到您的Tomcat,您將在com.example
組下找到doShutdown
操作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.