Hi !!<br />
<br />
I am accessing custom mbeans of was 6.1 from my jmx client.<br />
I have 2 JREs to run this jmx client either from the<br />
A) WAS JRE<br />
B) SUN JRE<br />
<br />
sachinlnctmca2004<br />
<br />
Following is my code:<br />
<br />
/*<br />
* Created on Mar 17, 2008<br />
*<br />
* TODO To change the template for this generated file go to<br />
* Window - Preferences - Java - Code Style - Code Templates<br />
*/<br />
package com;<br />
<br />
/**<br />
* @author Administrator<br />
*<br />
* TODO To change the template for this generated type comment go to<br />
* Window - Preferences - Java - Code Style - Code Templates<br />
*/<br />
import javax.management.MBeanPermission ;<br />
import com.ibm.websphere.security.WebSphereRuntimePermission;<br />
<br />
import java.io.Serializable;<br />
<br />
import java.util.Set;<br />
import java.util.Hashtable;<br />
import java.util.*;<br />
<br />
//old imports downside<br />
import javax.management.Attribute;<br />
<br />
import javax.management.MBeanAttributeInfo;<br />
import javax.management.MBeanServerPermission;<br />
<br />
import javax.management.Notification;<br />
import javax.management.NotificationListener;<br />
import javax.management.ObjectName;<br />
<br />
import javax.management.j2ee.Management;<br />
import javax.management.j2ee.ManagementHome;<br />
<br />
import javax.naming.Context;<br />
import javax.naming.InitialContext;<br />
import javax.rmi.PortableRemoteObject;<br />
<br />
import com.ibm.websphere.management.statistics.JVMStats;<br />
<p />
<p />
<p />
<br />
public class WSConnector implements Serializable{<br />
<br />
Hashtable env;<br />
ManagementHome mejbHome ;<br />
Management mejb;<br />
public WSConnector()<br />
{<br />
env = new Hashtable();<br />
<p />
<p />
try{<br />
<br />
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");<br />
//env.put(Context.PROVIDER_URL, "corbaloc:iiop:
192.168.0.109:9101");//2809<br />
env.put(Context.PROVIDER_URL, "iiop://
192.168.0.108:2809"); <br />
env.put("java.naming.corba.orb",org.omg.CORBA.ORB.init((String[])null,null));<br />
//env.put(Context.SECURITY_PRINCIPAL, "admin");<br />
//env.put(Context.SECURITY_CREDENTIALS, "admin");<br />
<p />
Context ic = new InitialContext(env);<br />
WebSphereRuntimePermission wrp = new WebSphereRuntimePermission ("AdminPermission");<br />
System.out.println(wrp.getName());<br />
<p />
MBeanPermission mbp = new MBeanPermission("<b>", "</b>");<br />
System.out.println("check guard="+ mbp.getActions());<br />
System.out.println(mbp.getActions());<br />
System.out.println(mbp.getName());<br />
<br />
//com.ibm.websphere.security.WebSphereRuntimePermission;<br />
<br />
Object obj = ic.lookup("ejb/mgmt/MEJB");<br />
// Object obj = ic.lookup("ejb/ivtEJBObject");<br />
<p />
mejbHome = (ManagementHome)PortableRemoteObject.narrow(obj, ManagementHome.class);<br />
mejb = mejbHome.create();<br />
<br />
ObjectName jvmQuery = new ObjectName("<b>:j2eeType=JVM,</b>");<br />
Set s = mejb.queryNames(jvmQuery, null);<br />
System.out.println("Size is"+s.size());<br />
/* ObjectName jvmMBean = (ObjectName) s.iterator().next();<br />
<br />
boolean hasStats = ((Boolean) mejb.getAttribute(jvmMBean,<br />
"statisticsProvider")).booleanValue();<br />
if (hasStats) {<br />
JVMStats stats = (JVMStats) mejb.getAttribute(jvmMBean,<br />
"stats");<br />
String[] statisticNames = stats.getStatisticNames();<br />
if (Arrays.asList(statisticNames).contains("heapSize")) {<br />
System.out.println("Heap size: " + stats.getHeapSize());<br />
}<br />
}*/<br />
<p />
<br />
// Iterator i1 = s.iterator();<br />
int j1=1;<br />
/*while(i1.hasNext())<br />
{<br />
ObjectName on1 =(ObjectName)i1.next();<br />
<br />
System.out.println("Heap Size is =" +mejb.getAttribute(on1,"heapSize"));<br />
<br />
j1++;<br />
}*/<br />
<p />
/* ObjectName jvmQuery1 = new ObjectName("<b>:j2eeType=Perf ,</b>");<br />
System.out.println(jvmQuery1);<br />
Set s1 = mejb.queryNames(jvmQuery1, null);<br />
System.out.println(s1.size());<br />
Iterator i4 = s1.iterator();<br />
while(i4.hasNext())<br />
{<br />
<br />
ObjectName kl = (ObjectName)i4.next();<br />
System.out.println("FreeMemory is =" +mejb.getAttribute(kl,"FreeMemory"));<br />
<br />
ObjectName jvmMBean9 = (ObjectName) i4.next();<br />
boolean hasStats = ((Boolean) mejb.getAttribute(jvmMBean9,<br />
"statisticsProvider")).booleanValue();<br />
System.out.println(hasStats);<br />
if (hasStats) {<br />
JVMStats stats = (JVMStats) mejb.getAttribute(jvmMBean9,"stats");<br />
String[] statisticNames = stats.getStatisticNames();<br />
if (Arrays.asList(statisticNames).contains("FreeMemory")) {<br />
System.out.println("Heap size: " + stats.getHeapSize());<br />
}<br />
}<br />
}*/<br />
}catch (Exception e)<br />
{<br />
e.printStackTrace();<br />
}<br />
<p />
<br />
}<br />
public static void main(String s[])<br />
{<br />
WSConnector ws = new WSConnector();<br />
ws.test();//Calling the test for displyaing and getting the mbeans operations and attribs<br />
System.out.println("connected");<br />
<br />
}<br />
public void test() {<br />
<p />
/*try{<br />
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");<br />
//env.put(Context.PROVIDER_URL, "corbaloc:iiop:
192.168.0.109:9101");<br />
env.put(Context.PROVIDER_URL, "iiop://
192.168.0.109:2809"); <br />
env.put("java.naming.corba.orb",org.omg.CORBA.ORB.init((String[])null,null));<br />
//env.put(Context.SECURITY_PRINCIPAL, "admin");<br />
//env.put(Context.SECURITY_CREDENTIALS, "admin");<br />
<p />
Context ic = new InitialContext(env);<br />
WebSphereRuntimePermission wrp = new WebSphereRuntimePermission ("AdminPermission");<br />
System.out.println(wrp.getName());<br />
<p />
MBeanPermission mbp = new MBeanPermission("<b>", "</b>");<br />
System.out.println("check guard="+ mbp.getActions());<br />
System.out.println(mbp.getActions());<br />
System.out.println(mbp.getName());<br />
<br />
//com.ibm.websphere.security.WebSphereRuntimePermission;<br />
<br />
Object obj = ic.lookup("ejb/mgmt/MEJB");<br />
// Object obj = ic.lookup("ejb/ivtEJBObject");<br />
<p />
ManagementHome mejbHome = (ManagementHome)PortableRemoteObject.narrow(obj, ManagementHome.class);<br />
Management mejb = mejbHome.create();*/<br />
try{<br />
ObjectName on = new ObjectName("WebSphere*:*");<br />
<br />
// get all objectnames for this server<br />
<br />
Set objectNameSet = mejb.queryNames(on, null);<br />
// System.out.println(on.getCanonicalName());<br />
<p />
Iterator i = objectNameSet.iterator();<br />
boolean hasStats=false;<br />
while (i.hasNext()) <br />
{<br />
<br />
on = (ObjectName) i.next();<br />
<br />
String type = on.getKeyProperty("type");<br />
<br />
if (!type.equals("ThreadPool")) {<br />
<br />
continue;<br />
<br />
} <br />
<br />
System.out.println("found mbean for JVM: " + on);<br />
//code for getting the attributes<br />
<p />
if(on.getKeyProperty("type").toString().equalsIgnoreCase("ThreadPool"))<br />
{<br />
MBeanAttributeInfo[] atin = mejb.getMBeanInfo(on).getAttributes();<br />
System.out.println(atin.length);<br />
<p />
for(int k=0;k<atin.length;k++)<br />
{<br />
System.out.println(k+"Attribute name is " +atin[k].getName());<br />
// System.out.println("Mbean type is " +atin[k].getType());<br />
//System.out.println("Mbean class is " +atin[k].getClass());<br />
<br />
}<br />
// System.out.println("name of data source is =" +(on1));<br />
/* String method = "setMinimumPoolSize";<br />
<br />
System.out.println("calling '" + method + "'");<br />
<br />
Object[] params = new Object[1]; //new Object[0];<br />
params[0]= new Integer(12);<br />
Object[] params1=null;<br />
<br />
String[] signature = new String[1]; // new String[0];<br />
signature[0]="java.lang.Integer";<br />
<br />
Object o = mejb.invoke(on, method, params, signature); <br />
// Boolean sets = (Boolean) o; <br />
<br />
//System.out.println("name of mmmmmmmmmm =" +(sets));*/<br />
// mejb.setAttribute(on,new Attribute("minimumSize", new Integer(5))); <br />
System.out.println("reading the minimumSize for Thread Pool =" +mejb.getAttribute(on,"minimumSize"));<br />
// hasStats =((Boolean) mejb.getAttribute(on,"stats")).booleanValue();<br />
<br />
}<br />
<br />
/* if (hasStats) {<br />
System.out.println("reading333333333" +mejb.getAttribute(on,"connectionFactoryType"));<br />
JVMStats stats = (JVMStats) mejb.getAttribute(on,<br />
"stats");<br />
System.out.println("reading333333333" +stats);<br />
String[] statisticNames = stats.getStatisticNames();<br />
System.out.println("reading333333333" +statisticNames);<br />
if (Arrays.asList(statisticNames).contains("heapSize")) {<br />
System.out.println("Heap size: poloolo" + stats.getStatistics());<br />
}}*/<br />
<p />
<br />
// printClusterMembers(on);<br />
System.out.println("success");<br />
<p />
}//availableList(on);<br />
}catch (Exception e)<br />
{e.printStackTrace();<br />
}<br />
}<br />
}<br />
<br />
And the error I am getting is --------------------><br />
<p />
javax.management.JMRuntimeException: ADMN0022E: Access is denied for the getMinimumPoolSize operation on ThreadPool MBean because of insufficient or empty credentials.<br />
at com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1918)<br />
at com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1766)<br />
at com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1694)<br />
at com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1667)<br />
at com.ibm.ws.management.AdminServiceImpl.getAttribute(AdminServiceImpl.java:661)<br />
at com.ibm.ws.management.j2ee.ManagementBean.getAttribute(ManagementBean.java:156)<br />
at javax.management.j2ee.EJSRemoteStatelessManagement_06214580.getAttribute(Unknown Source)<br />
at javax.management.j2ee._EJSRemoteStatelessManagement_06214580_Tie.getAttribute(_EJSRemoteStatelessManagement_06214580_Tie.java:265)<br />
at javax.management.j2ee._EJSRemoteStatelessManagement_06214580_Tie._invoke(_EJSRemoteStatelessManagement_06214580_Tie.java:141)<br />
at com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:613)<br />
at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:466)<br />
at com.ibm.rmi.iiop.ORB.process(ORB.java:503)<br />
at com.ibm.CORBA.iiop.ORB.process(ORB.java:1552)<br />
at com.ibm.rmi.iiop.Connection.respondTo(Connection.java:2673)<br />
at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2551)<br />
at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:62)