JMX实践-JMX连接端口 (good)
http://stackoverflow.com/questions/151238/has-anyone-ever-got-a-remote-jmx-jconsole-to-work (如何找到随机分配的rmi server stub port)
"Enabling JMX Remote / Jconsole remote monitor settings:
http://tomcat.apache.org/tomcat-8.0-doc/monitoring.htmlJconsole远程连接: http://blog.youkuaiyun.com/lijiecong/article/details/6882267"
" java -Djava.rmi.server.hostname=109.123.121.11 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8452 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.managemnt.jmxremote.authenticate=false -jar eureka-0.0.1-SNAPSHOT.jar"
"解决在Linux上部署RMI Server,访问出现拒绝访问地址127.0.1.1的问题:
主要是这个原因java.net.InetAddress.getLocalHost取本机ip的时候,在windows下取到的是正确的ip,而在linux下取到的是127.0.1.1(ubuntu10、fedora4 、as3下都是这样的),解决方案两种:
1. 在jvm启动时增加参数java.rmi.server.hostname,-Djava.rmi.server.hostname=你的部署机器的ip
2. 修改hosts文件
我的处理方法是,修改了/etc/hosts文件,增加了一句话:
10.0.0.60 ubuntu
// 前面是部署机器的ip,后面是主机名"
Java SE 6 新特性: JMX 与系统管理: http://www.ibm.com/developerworks/cn/java/j-lo-jse63/
jmx为啥开了额外两个随机端口? http://blog.youkuaiyun.com/u013793650/article/details/24368831
tomcat jmx穿防火墙: http://tomcat.apache.org/tomcat-8.0-doc/config/listeners.html#JMX_Remote_Lifecycle_Listener_-_org.apache.catalina.mbeans.JmxRemoteLifecycleListener
setenv.sh:
#!/bin/sh
export CATALINA_OPTS="-Djava.rmi.server.hostname=109.123.121.11 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8452 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
setenv.bat:
set CATALINA_OPTS=-Djava.rmi.server.hostname=109.123.112.59 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
@Configuration
public class ConfigureRMI {
@Value("${jmx.rmi.host:localhost}")
private String rmiHost;
@Value("${jmx.rmi.port:8454}")
private Integer rmiPort;
@Bean
public RmiRegistryFactoryBean rmiRegistry() {
final RmiRegistryFactoryBean rmiRegistryFactoryBean = new RmiRegistryFactoryBean();
rmiRegistryFactoryBean.setPort(rmiPort);
rmiRegistryFactoryBean.setAlwaysCreate(true);
return rmiRegistryFactoryBean;
}
@Bean
@DependsOn("rmiRegistry")
public ConnectorServerFactoryBean connectorServerFactoryBean() throws Exception {
final 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;
}
}
System.out.println(InetAddress.getLocalHost().toString());