Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

"Access is denied for the getMinimumPoolSize operation on ThreadPool"

42 views
Skip to first unread message

sachg...@gmail.com

unread,
Apr 12, 2008, 2:45:51 AM4/12/08
to
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&lt;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 --------------------&gt;<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)
0 new messages