使用jmx监控weblogic使用JDk怎么就是连接不上呢?还报t3协议错误!

pengcongemail 2011-09-29 01:12:29
我在网上搜的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();
}

}

}


前辈帮帮忙,帮我看一下,还需要一些什么?回复点帮助一件。谢谢!急!!!!
急急急急急急急急!
...全文
281 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
完美灬缺陷 2011-09-30
  • 打赏
  • 举报
回复
帮顶下。
pengcongemail 2011-09-30
  • 打赏
  • 举报
回复
package test;



import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Hashtable;

import javax.management.AttributeNotFoundException;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanException;
import javax.management.MBeanServerConnection;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.ReflectionException;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import javax.naming.Context;
import weblogic.management.mbeanservers.*;

public class Test {
private static MBeanServerConnection connection;
private static JMXConnector connector;
private static ObjectName service;
private static String _DOMAIN_RUNTIME_SERVICE_OBJECTNAME=new String("com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean");
private static String _DOMAIN_RUNTIME_OBJECTNAME=new String("DomainRuntime");
private static String _SERVER_LIFE_CYCLE_RUNTIMES_OBJECTNAME=new String("ServerLifeCycleRuntimes");
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的连接采用的事iiop协议
*
* @param hostname
* @param portString
* @param username
* @param password
* @throws Exception
*/
private void initConnection(String hostname, String portString,
String username, String password) throws Exception {

Integer portInteger = Integer.valueOf(portString);
int port = portInteger.intValue();
JMXServiceURL serviceURL=
new JMXServiceURL(
"service:jmx:iiop://"+hostname+":"+port+"/jndi/weblogic.management.mbeanservers.domainruntime");

System.out.println("Connection to:"+serviceURL);

Hashtable h=new Hashtable();
h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,"weblogic.management.remote");
h.put(javax.naming.Context.SECURITY_PRINCIPAL, "weblogic");
h.put(javax.naming.Context.SECURITY_CREDENTIALS, "weblogic");
connector=JMXConnectorFactory.newJMXConnector(serviceURL, h);
connector.connect();

System.out.println("连接成功!");

connection=connector.getMBeanServerConnection();
}
public static ObjectName[] getServerRuntime() throws AttributeNotFoundException, InstanceNotFoundException, MBeanException, ReflectionException, IOException{

return (ObjectName[])connection.getAttribute(service, "ServerRuntimes");
}
/*
* 打印一组ServerRuntiimeMBeans,此MBean是运行是MBean层次的根。此域中夫人每个服务器承载着自己的实例
*/
public static ObjectName[] getServerRuntimes() throws Exception {

ObjectName domainRunServiceOName=new ObjectName(_DOMAIN_RUNTIME_SERVICE_OBJECTNAME);

ObjectName[] serverRuntimeMBean=(ObjectName[])connection.getAttribute(domainRunServiceOName, "ServerRuntimes");
return serverRuntimeMBean;
}
public void runTest(){
try {
ObjectName runtimeOn=new ObjectName("com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean");
ObjectName server=(ObjectName)connection.getAttribute(runtimeOn, "ServerConfiguration");
System.out.println("Server ---->"+server);
System.out.println("Server Name-->"+connection.getAttribute(runtimeOn, "ServerName"));
//System.out.println("Server State-->"+connection.getAttribute(runtimeOn, "State"));
ObjectName domain=(ObjectName)connection.getAttribute(runtimeOn, "DomainConfiguration");
System.out.println("Domain Name-->"+connection.getAttribute(domain, "Name"));
System.out.println("Listen port--->"+connection.getAttribute(server, "ListenPort").toString());
} catch (Exception e) {
e.printStackTrace();
}
}
public void runGC(){

try {
ObjectName domainRunServiceOName=new ObjectName(_DOMAIN_RUNTIME_SERVICE_OBJECTNAME);

ObjectName[] serverRuntimeMBean=(ObjectName[])connection.getAttribute(domainRunServiceOName, "ServerRuntimes");
for (ObjectName objectName : serverRuntimeMBean) {
System.out.println(" =======>>>>"+objectName);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
* 获取一组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"));
}
}
}
}

}

}
/**
* 迭代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());

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 + "秒");

}

}


/*
* 打印输出
*/
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.getServletData();
System.out.println("===========================================================================================================");
demo.printNameAndState(demo.getServerRuntimes());

connector.close();
} catch (Exception e) {
e.printStackTrace();
}

}

}

7,765

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧