2
A
回答
8
通过自己的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你会发现doShutdown
运行在com.example
组
相关问题
- 1. Apache如何检测停止的Tomcat JVM?
- 2. 停止提示输入密码Apache Tomcat
- 3. Tomcat的JMX CPU使用率
- 4. 使用maven启动/停止tomcat
- 5. 如何在停止后启用apache tomcat 8.5
- 6. 无法停止Tomcat
- 7. 如何停止线程当Tomcat停止
- 8. 监测在Tomcat中使用JMX
- 9. Apache停止响应SSL + mod_jk
- 10. 使用JMX(或WLST)在Weblogic 9中启动/停止部署
- 11. tomcat在使用SSL转移到mod_proxy_ajp时停止在apache后面服务
- 12. 我的eclipse + apache tomcat/6.0.30停止提供文件
- 13. 如何停止所有端口的Apache Tomcat
- 14. Tomcat 7停止响应
- 15. 何时使用Apache与Apache + Tomcat?
- 16. 使用Apache Tomcat的socket.io
- 17. 使用Apache Tomcat的OpenSSL 6
- 18. 通过JMX监控Tomcat
- 19. Tomcat中JMX的RMI存根
- 20. 停止Tomcat以保存用户凭据
- 21. 在从Apache Tomcat取消部署/停止应用程序之前停止进程/线程
- 22. 停止apache mina服务器
- 23. XAMPP Apache服务停止
- 24. 停止Apache重写规则
- 25. Apache Procrun - 停止命令不起作用
- 26. Apache Tomcat启用HTTP
- 27. 如何在Apache ActiveMQ中启用JMX
- 28. 如何使用Java启动和停止Tomcat容器?
- 29. 如何使用java代码启动和停止tomcat?
- 30. 如何清洁数据库而不停止使用java的tomcat
可能是你可以使用Runtime类来执行命令停止Tomcat,你会从命令行执行的方式。 – virendrao
这对我来说似乎是一个巨大的安全漏洞。 – duffymo
你能告诉我一些Java代码示例吗? –