以前所作的一切应用程序基本上都是由tomcat容器,控制web应用程序的生死、这两天简单的学习了下jmx,有所感悟。所以反其道而行之:自己写一个JmxAgent来控制tomcat的生、死,从而达到:利用jmx来控制资源的目的。
在项目中集成tomcat我很早以前就听说过,一直以为很神秘:技术含量很高。通过我自己的研究:发现其实就比helloworld难一点。上代码。
我的实现很简单:一个标准的mbean,挂上一个htmlAdaper和另外一个rmiconnector以备访问。
代码如下:MBean接口:
package com.cxz.jmx;
public interface TcMgrMBean {
public void startTc();
public void stopTc();
}
具体的MBean实现:其中的Bootstrap.main(...)需要解释一下:参照tomcat的源代码:该类是tc的启动类。当然,本例中采用的形式是:把tc打包引入到工程中。还有另外一种实现方式是:利用Process方式启动另外一个
进程。第一种方式是:两个应用程序在一个jvm中,第二中则是2个jvm管理、控制可能要麻烦些。
package com.cxz.jmx;
import org.apache.catalina.startup.Bootstrap;
public class TcMgr implements TcMgrMBean, Runnable {
public void startTc() {
Thread thread = new Thread(this, "tomcat-6");
thread.start();
}
public void stopTc() {//具体参阅tc6 src
String[] params = new String[1];
params[0] = "stop";
Bootstrap.main(params);
}
public void run() {//具体参阅tc6 src
String[] args = new String[0];
Bootstrap.main(args);
}
}
代理类.稍候我会把源代码上传至网络硬盘.
package com.cxz.jmx;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import javax.management.remote.JMXConnectorServer;
import javax.management.remote.JMXConnectorServerFactory;
import javax.management.remote.JMXServiceURL;
import com.sun.jdmk.comm.HtmlAdaptorServer;
public class TcAgent {
private MBeanServer server = null;
public TcAgent() {
//The default constructor of the Agent
}
public void assemble() throws Exception {
server = MBeanServerFactory.createMBeanServer("TcAgent");
HtmlAdaptorServer adapter = new HtmlAdaptorServer();
//regist the MBean
TcMgr manager = new TcMgr();
server.registerMBean(manager, new ObjectName("TcAgent:name=TcManager"));
//regist the HtmlAdaptor
adapter.setPort(9092);
server.registerMBean(adapter, new ObjectName(
"TcAgent:name=htmlAdaptor,port=9092"));
adapter.start();
//compose the RMIConnector
JMXServiceURL url = new JMXServiceURL(
"service:jmx:rmi:///jndi/rmi://10.237.81.67:9999/server");
JMXConnectorServer cs = JMXConnectorServerFactory
.newJMXConnectorServer(url, null, server);
cs.start();
}
public static void main(String[] args) throws Exception {
new TcAgent().assemble();
}
}
当然:启动之前要先注册rmi再console中运行:rmiregistry 9999。在运行本程序。
启动之后访问http://localhost:9092就可以动态控制tc的开、关
分享到:
相关推荐
通过集成JMX,开发者可以远程访问和控制Tomcat的各项配置,以适应不断变化的需求。 集成Spring和JMX的过程主要包括以下步骤: 1. 创建MBean:定义一个Java类实现特定的管理功能,并通过实现`javax.management....
该文件用于控制jmx的访问权限。在文件最后两行,我们需要取消注释,启用monitorRole和controlRole两个角色。monitorRole拥有只读权限,而controlRole拥有读写权限。 四、配置jmxremote.password文件 在同一目录下...
**Tomcat开启远程JMX连接方式详解** Java Management Extensions (JMX) 是Java平台提供的一种标准管理框架,它允许开发者创建、管理和监控应用程序的各种资源,包括服务器、应用程序、设备和服务。在Tomcat这样的...
Tomcat支持JMX,因此我们可以创建一个JMX客户端来远程控制Tomcat的启动和停止。首先,需要在Tomcat中启用JMX Remote,然后通过MBeanServer连接到Tomcat并调用相应的操作。 2. **API方式**: 另外,Tomcat提供了API供...
标题“cmdline-jmxclient.zip”指的是一个包含命令行界面的Java管理扩展(JMX)客户端工具,这个工具主要用于远程连接并监控Java虚拟机(JVM)以及运行在其中的应用,比如Tomcat服务器。JMX是一种Java平台提供的标准...
3. 访问控制:通过对 JMX Agent 的访问控制,我们可以限制只有特定的用户或角色可以访问 JMX Agent。例如,我们可以使用 Role-Based Access Control(RBAC)来对 JMX Agent 进行访问控制。 通过采取这些措施,我们...
1. **Servlet容器集成**:一种常见的实现JMX通过HTTP访问的方式是通过Servlet容器(如Tomcat)集成。开发者可以创建一个Servlet,该Servlet通过JMX API连接到MBeanServer,并将MBean的信息转换为HTML格式供用户在...
Tomcat使用JMX来暴露其内部状态和管理信息,允许管理员通过各种JMX客户端来监控和配置运行中的Tomcat服务器。在源码级别研究JMX在Tomcat中的应用,可以帮助我们掌握如何为自己的Java应用提供管理接口。 5. 容器初探...
例如,你可以通过JMX监控Tomcat服务器的线程池状态,或者调整数据库连接池的参数。 8. **自定义MBean**:根据需求,开发者可以创建自定义的MBean来管理特定的应用逻辑或资源。 9. **异常处理**:MBean的操作可能会...
5. **JMX支持**:集成了Java Management Extensions (JMX),允许通过JMX管理Tomcat实例,监控服务器状态和性能。 **Tomcat6.0** Tomcat6.0于2006年发布,基于Java Servlet 2.5和JavaServer Pages 2.1规范,相比...
5. **JMX(Java Management Extensions)**:Tomcat支持JMX,允许管理员监控和管理服务器状态。查看`jmx`目录下的源码可以了解如何使用JMX注册和暴露管理MBean。 6. **配置解析**:Tomcat的配置文件如`server.xml`...
本文将详细介绍如何通过Tomcat开启JMX监控,此方法适用于使用Tomcat服务器的Java应用管理。由于本文采用图文并茂的方式详细介绍,因此具有很高的参考价值。 监控方法主要分为两部分,一部分为无需账号密码的简单...
8. **JMX (Java Management Extensions)**: Tomcat使用JMX暴露管理MBeans(Managed Beans),允许通过JMX代理远程监控和管理Tomcat服务器的状态,包括启动/停止应用、查看线程池状态、调整配置等。 9. **Clustering...
8. **JMX(Java Management Extensions)支持**:Tomcat支持JMX,允许通过JMX管理工具监控和管理Tomcat实例,如调整配置、查看运行状态、收集性能指标等。 9. **集群与负载均衡**:Tomcat支持集群配置,可以创建多...
在Tomcat这样的Java应用服务器中,为了保护JMX服务的安全,通常需要进行身份验证和授权。`jmx_access&password;` 文件就是用来配置这些安全策略的。文件中的内容通常包含用户账户、密码以及它们可以执行的操作。例如...
1. **JMX监控**:通过Java Management Extensions (JMX) 可以远程监控Tomcat的状态和性能。 2. **日志系统**:利用Juli,可以自定义日志级别、输出位置和格式,便于问题排查。 3. **管理界面**:默认安装的`...
7. **安全性**:Tomcat的安全管理主要涉及访问控制和权限管理,这可以通过`conf/tomcat-users.xml`配置用户的角色和权限。同时,HTTPS支持可以通过配置`conf/server.xml`中的`<Connector>`元素来启用。 8. **性能...
1. JMX监控:通过JMX(Java Management Extensions),可以远程监控Tomcat的状态,包括线程、内存、连接器等。 2. Catalina日志:`logs/catalina.out`文件记录了Tomcat的运行日志,便于排查问题。 3. VisualVM或...