使用jmx监控weblogic使用JDk怎么就是连接不上呢?还报t3协议错误!
我在网上搜的jmx监控weblogic代码,但是就是运行不起。一下java源码:
package test;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Hashtable;
import javax.management.MBeanServerConnection;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import javax.naming.Context;
public class Test {
private static MBeanServerConnection connection;
private static JMXConnector connector;
private static ObjectName service;
static {
try {
service = new ObjectName(
"com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean");
} catch (MalformedObjectNameException e) {
throw new AssertionError(e.getMessage());
}
}
/**
* 实例化与Domain Runtime MBean Server的连接
*
* @param hostname
* @param portString
* @param username
* @param password
* @throws Exception
*/
private void initConnection(String hostname, String portString,
String username, String password) throws Exception {
String protocol = "t3";
Integer portInteger = Integer.valueOf(portString);
int port = portInteger.intValue();
String jndiroot = "/jndi/";
String mserver = "weblogic.management.mbeanservers.domainruntime";
JMXServiceURL serviceUrl = new JMXServiceURL(protocol, hostname, port,
jndiroot + mserver);
Hashtable<String, String> h = new Hashtable<String, String>();
h.put(Context.SECURITY_PRINCIPAL, username);
h.put(Context.SECURITY_CREDENTIALS, password);
h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,
"weblogic.manangement.remote");
connector = JMXConnectorFactory.connect(serviceUrl, h);
connection = connector.getMBeanServerConnection();
System.out.println("连接成功!");
}
/*
* 打印一组ServerRuntiimeMBeans,此MBean是运行是MBean层次的根。此域中夫人每个服务器承载着自己的实例
*/
public ObjectName[] getServerRuntimes() throws Exception {
return (ObjectName[]) connection
.getAttribute(service, "ServerRuntimes");
}
/**
* 迭代serverRuntimeMBean,获取名称和状态
*
* @param p_objNames
* @throws Exception
*/
public void printNameAndState(ObjectName[] p_objNames) throws Exception {
ObjectName[] serverRT = p_objNames;
System.out.println(" got server runtimes");
int length = (int) serverRT.length;
for (int i = 0; i < length; i++) {
System.out
.println("=============================weblogic 运行信息========================================");
// 域名称
String name = (String) connection.getAttribute(serverRT[i], "Name");
System.out.println("Server name:" + name);
// 运行状态
String state = (String) connection.getAttribute(serverRT[i],
"State");
System.out.println("Server state:" + state);
// 开始时间
Long activationTime = (Long) connection.getAttribute(serverRT[i],
"ActivationTime");
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
date.setTime(activationTime);
SimpleDateFormat formater = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
String strDateTime = formater.format(date);
System.out.println("Start running time:" + strDateTime);
// weblogic 的版本
String weblogicVersion = (String) connection.getAttribute(
serverRT[i], "WeblogicVersion");
System.out.println("Weblogic Version:" + weblogicVersion);
// OS信息
ObjectName jvmServerRT = (ObjectName) connection.getAttribute(
serverRT[i], "JVMRuntime");
System.out
.println("================================OS信息=======================================");
System.out
.println("操作系统:"
+ connection.getAttribute(jvmServerRT, "OSName")
.toString());
System.out.println("操作系统版本:"
+ connection.getAttribute(jvmServerRT, "OSVersion")
.toString());
System.out.println("Java版本:"
+ connection.getAttribute(jvmServerRT, "JavaVersion")
.toString());
System.out.println("Java提供商:"
+ connection.getAttribute(jvmServerRT, "OSJavaVmVendor")
.toString());
long runTime = (Long) connection
.getAttribute(jvmServerRT, "Uptime") / 1000;
long day = runTime / (24 * 60 * 60);
long hour = runTime % (24 * 60 * 60) / (60 * 60);
long minute = runTime % (60 * 60) / 60;
long second = runTime % 60;
System.out.println("系统已经运行:" + day + "天" + hour + "小时" + minute
+ "分" + second + "秒");
}
}
/**
* 获取一组WebApplicationComponentRuntimeMBean
*
* @throws Exception
*/
public void getServletData() throws Exception {
ObjectName[] serverRT = getServerRuntimes();
int length = (int) serverRT.length;
for (int i = 0; i < length; i++) {
ObjectName[] appRT = (ObjectName[]) connection.getAttribute(
serverRT[i], "ApplicationRuntimes");
int appLength = (int) appRT.length;
for (int x = 0; x < appLength; x++) {
System.out.println("Application name:"
+ (String) connection.getAttribute(appRT[x], "Name"));
ObjectName[] compRT = (ObjectName[]) connection.getAttribute(
appRT[x], "ComponentRuntimes");
int compLength = (int) compRT.length;
for (int y = 0; y < compLength; y++) {
System.out.println("Component name:"
+ (String) connection.getAttribute(compRT[y],
"Name"));
String componentType = (String) connection.getAttribute(
compRT[y], "Type");
System.out.println("type:" + componentType.toString());
if (componentType.toString().equals(
"WebAppComponentRuntime")) {
ObjectName[] servletRTs = (ObjectName[]) connection
.getAttribute(compRT[y], "Servlets");
int servletLength = (int) servletRTs.length;
for (int z = 0; z < servletLength; z++) {
System.out.println("Servlet name:"
+ (String) connection.getAttribute(
servletRTs[z], "Name"));
System.out.println("Servlet context path:"
+ (String) connection.getAttribute(
servletRTs[z], "ContextPath"));
System.out.println("Invocation Total Count:"
+ (Object) connection.getAttribute(
servletRTs[z],
"InvocationTotalCount"));
}
}
}
}
}
}
/*
* 打印输出
*/
public void print(String prefix, String content) {
System.out.println(prefix + ":" + content);
}
public static void main(String[] args) {
String hostname = "localhost";
String portString = "7001";
String username = "webglogic";
String password = "weblogic";
Test demo = new Test();
try {
demo.initConnection(hostname, portString, username, password);
demo.printNameAndState(demo.getServerRuntimes());
// demo.getServletData();
// 得到运行时的信息
// MBeanInfo
// runMBeanInfo=connection.getMBeanInfo(ObjectName.getInstance("" +
// "com.bea:Location=AdminServer,Name=consoleapp,ServerRuntime=AdminServer,Type=ServerRuntime"));
// MBeanAttributeInfo[] attr=runMBeanInfo.getAttributes();
// for(int i=0;i<attr.length;i++){
// if("WorkManagerRuntimes".equals(attr[i].getName())){
// demo.print("Runtime info", attr[i].getName());
// demo.print("Runtime Desc", attr[i].getDescription());
// }
// }
connector.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
前辈帮帮忙,帮我看一下,还需要一些什么?回复点帮助一件。谢谢!急!!!!
急急急急急急急急!