-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=1234
-Dcom.sun.management.jmxremote.ssl=false
2.为了绑定特定地址,需要在增加下面的VM参数:
-Djava.rmi.server.hostname=A.B.C.D
3.这样,就可以像下面的JMX客户端代码一样连接你的服务器:
String host = "localhost" // or some A.B.C.D
int port = 1234
String url = "service:jmx:rmi:///jndi/rmi://" + host + ":" + port + "/jmxrmi"
JMXServiceURL serviceUrl = new JMXServiceURL(url)
JMXConnector jmxConnector = JMXConnectorFactory.connect(serviceUrl, null)
try {
MBeanServerConnection mbeanConn = jmxConnector.getMBeanServerConnection()
// now query to get the beans or whatever
Set<ObjectName>beanSet = mbeanConn.queryNames(null, null)
...
} finally {
jmxConnector.close()
}
4. 也可以不使用VM参数,代码本身可以通过编程在指定端口号发布。但是这个已需求更复杂了。
如果要根据PID来连接,,需要使用Java 6以上的版本。代码:
List<VirtualMachineDescriptor>vms = VirtualMachine.list()
for (VirtualMachineDescriptor desc : vms) {
VirtualMachine vm
try {
vm = VirtualMachine.attach(desc)
} catch (AttachNotSupportedException e) {
continue
}
Properties props = vm.getAgentProperties()
String connectorAddress =
props.getProperty("com.sun.management.jmxremote.localConnectorAddress")
if (connectorAddress == null) {
continue
}
JMXServiceURL url = new JMXServiceURL(connectorAddress)
JMXConnector connector = JMXConnectorFactory.connect(url)
try {
MBeanServerConnection mbeanConn = connector.getMBeanServerConnection()
Set<ObjectName>beanSet = mbeanConn.queryNames(null, null)
...
} finally {
jmxConnector.close()
}
}
5.一个新的SimpleJMX包,该包能帮助很简单的启动一个JMX服务,并向远程客户端发送beans。
//创建一个新的服务器并监听8000端口
JmxServer jmxServer = new JmxServer(8000)
//启动服务器
jmxServer.start()
//注册下面定义的lookupCache对象
jmxServer.register(lookupCache)
jmxServer.register(someOtherObject)
//停止服务
jmxServer.stop()
该包确实有一个客户端的接口,但是当前没有人一种机制是可以通过PID来查找进程的,只支持主机/端口的组合方式查找。
首先使用ps -ef 确认你要监控的weblgoic,修改setDomain.sh文件 添加如下内容:JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.port=9999"
JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.ssl=false "
JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.pwd.file=/opt/bea/jrockit90_150_06/jre/lib/management/jmxremote.password"
# JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.authenticate=false"
export JAVA_OPTIONS
关于jconsole的访问密码,可在该实例所使用的$JRE_HOME/lib/management/下配置,很重要的两个文件是
jmxremote.password.template #配置访问用户名与密码
jmxremote.access #增加该用户访问权限,
这样配置就好了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)