我们部署war包的时候都是通过修改tomcat配置文件的方式开启jmx的,那么jar包应该怎么开启呢?
1.直接在启动命令中开启
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8849 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=localhost -jar OpenJmx.jar
2.配置环境变量开启
export JAVA_OPTS='-Djava.rmi.server.hostname=localhost -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8849 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false'
3.通过springboot内置tomcat开启
3.1yml配置
jmx:
rmi:
host: localhost
port: 8849
3.2配置类
package com.sinosoft.zh.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.jmx.support.ConnectorServerFactoryBean;
import org.springframework.remoting.rmi.RmiRegistryFactoryBean;
import javax.management.MalformedObjectNameException;
@Configuration
public class JmxAutoConfiguration {
private static final Logger logger = LoggerFactory.getLogger(JmxAutoConfiguration.class);
@Value("${jmx.rmi.host}")
private String rmiHost;
@Value("${jmx.rmi.port}")
private String rmiPort;
@Bean
public RmiRegistryFactoryBean rmiRegistry(){
RmiRegistryFactoryBean rmiRegistryFactoryBean = new RmiRegistryFactoryBean();
rmiRegistryFactoryBean.setPort(Integer.valueOf(rmiPort));
rmiRegistryFactoryBean.setAlwaysCreate(true);
return rmiRegistryFactoryBean;
}
@Bean
@DependsOn("rmiRegistry")
public ConnectorServerFactoryBean connectorServerFactoryBean() throws MalformedObjectNameException {
ConnectorServerFactoryBean connectorServerFactoryBean = new ConnectorServerFactoryBean();
connectorServerFactoryBean.setObjectName("connector:name=rmi");
connectorServerFactoryBean.setServiceUrl(
String.format("service:jmx:rmi://%s:%s/jndi/rmi://%s:%s/jmxrmi", rmiHost, rmiPort, rmiHost, rmiPort)
);
return connectorServerFactoryBean;
}
}