This is my code:
(this is just the code from the wasv600base_admin.pdf book)
package was6.jmx;
import java.util.Arrays;
import java.util.Properties;
import java.util.Set;
import javax.management.ObjectName;
import javax.management.j2ee.Management;
import javax.management.j2ee.ManagementHome;
import javax.management.j2ee.statistics.JVMStats;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
public class TestJMX
{
public static void main(String[] args)
{
try
{
new TestJMX().doIt(args);
}
catch (Exception vErr)
{
vErr.printStackTrace();
}
System.exit(0);
}
protected void doIt(String[] args) throws Exception
{
Properties props = new Properties ();
props.setProperty(Context.PROVIDER_URL, "iiop://localhost:2809");
Context ic = new InitialContext(props);
Object obj = ic.lookup("ejb/mgmt/MEJB");
ManagementHome mejbHome = (ManagementHome)
PortableRemoteObject.narrow(obj, ManagementHome.class);
Management mejb = mejbHome.create();
doGetHeapSize(mejb);
}
protected void doGetHeapSize(Management aMEjb) throws Exception
{
ObjectName jvmQuery = new ObjectName("*:j2eeType=JVM,*");
Set s = aMEjb.queryNames(jvmQuery, null);
ObjectName jvmMBean = (ObjectName) s.iterator().next();
boolean hasStats = ((Boolean) aMEjb.getAttribute(jvmMBean,
"statisticsProvider")).booleanValue();
if(hasStats)
{
JVMStats stats = (JVMStats) aMEjb.getAttribute(jvmMBean, "stats");
String[] statisticNames = stats.getStatisticNames();
if(Arrays.asList(statisticNames).contains("heapSize"))
{
System.out.println("Heap size: " + stats.getHeapSize());
}
}
}
}
but this exception occurs:
java.rmi.ServerException: RemoteException occurred in server thread; nested
exception is:
java.rmi.RemoteException:
Trace from server: 1198777258 at host rmazzola.private.datasys.it >>
java.rmi.RemoteException: ; nested exception is:
javax.management.JMRuntimeException: ADMN0022E: accesso negato per
l'operazione getStats su MBean JVM a causa di
credenziali insufficienti o vuote.
at
com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1705)
at
com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1603)
at
com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1533)
at
com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1506)
at
com.ibm.ws.management.AdminServiceImpl.getAttribute(AdminServiceImpl.java:501)
at
com.ibm.ws.management.j2ee.ManagementBean.getAttribute(ManagementBean.java:155)
at
javax.management.j2ee.EJSRemoteStatelessManagement_06214580.getAttribute(Unknown
Source)
at
javax.management.j2ee._EJSRemoteStatelessManagement_06214580_Tie.getAttribute(_EJSRemoteStatelessManagement_06
214580_Tie.java:257)
at
javax.management.j2ee._EJSRemoteStatelessManagement_06214580_Tie._invoke(_EJSRemoteStatelessManagement_0621458
0_Tie.java:132)
at
com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:608)
at
com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:461)
at com.ibm.rmi.iiop.ORB.process(ORB.java:432)
at com.ibm.CORBA.iiop.ORB.process(ORB.java:1728)
at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2229)
at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:65)
at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:95)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1332)
Caused by: javax.management.JMRuntimeException: ADMN0022E: accesso negato
per l'operazione getStats su MBean JVM a causa
di credenziali insufficienti o vuote.
... 17 more
<< END server: 1198777258 at host rmazzola.private.datasys.it
; nested exception is:
javax.management.JMRuntimeException: ADMN0022E: accesso negato per
l'operazione getStats su MBean JVM a causa di
credenziali insufficienti o vuote.
at
com.ibm.CORBA.iiop.UtilDelegateImpl.mapSystemException(UtilDelegateImpl.java:162)
at javax.rmi.CORBA.Util.mapSystemException(Util.java:84)
at
org.omg.stub.javax.management.j2ee._Management_Stub.getAttribute(_Management_Stub.java:454)
at was6.jmx.TestJMX.doGetHeapSize(TestJMX.java:66)
at was6.jmx.TestJMX.doIt(TestJMX.java:54)
at was6.jmx.TestJMX.main(TestJMX.java:36)
Caused by: java.rmi.RemoteException:
Trace from server: 1198777258 at host rmazzola.private.datasys.it >>
java.rmi.RemoteException: ; nested exception is:
javax.management.JMRuntimeException: ADMN0022E: accesso negato per
l'operazione getStats su MBean JVM a causa di
credenziali insufficienti o vuote.
at
com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1705)
at
com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1603)
at
com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1533)
at
com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1506)
at
com.ibm.ws.management.AdminServiceImpl.getAttribute(AdminServiceImpl.java:501)
at
com.ibm.ws.management.j2ee.ManagementBean.getAttribute(ManagementBean.java:155)
at
javax.management.j2ee.EJSRemoteStatelessManagement_06214580.getAttribute(Unknown
Source)
at
javax.management.j2ee._EJSRemoteStatelessManagement_06214580_Tie.getAttribute(_EJSRemoteStatelessManagement_06
214580_Tie.java:257)
at
javax.management.j2ee._EJSRemoteStatelessManagement_06214580_Tie._invoke(_EJSRemoteStatelessManagement_0621458
0_Tie.java:132)
at
com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:608)
at
com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:461)
at com.ibm.rmi.iiop.ORB.process(ORB.java:432)
at com.ibm.CORBA.iiop.ORB.process(ORB.java:1728)
at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2229)
at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:65)
at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:95)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1332)
Caused by: javax.management.JMRuntimeException: ADMN0022E: accesso negato
per l'operazione getStats su MBean JVM a causa
di credenziali insufficienti o vuote.
... 17 more
<< END server: 1198777258 at host rmazzola.private.datasys.it
; nested exception is:
javax.management.JMRuntimeException: ADMN0022E: accesso negato per
l'operazione getStats su MBean JVM a causa di
credenziali insufficienti o vuote.
at
com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1705)
at
com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1603)
at
com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1533)
at
com.ibm.ws.management.AdminServiceImpl.preInvoke(AdminServiceImpl.java:1506)
at
com.ibm.ws.management.AdminServiceImpl.getAttribute(AdminServiceImpl.java:501)
at
com.ibm.ws.management.j2ee.ManagementBean.getAttribute(ManagementBean.java:155)
at
javax.management.j2ee.EJSRemoteStatelessManagement_06214580.getAttribute(Unknown
Source)
at
javax.management.j2ee._EJSRemoteStatelessManagement_06214580_Tie.getAttribute(_EJSRemoteStatelessManagement_06
214580_Tie.java:257)
at
javax.management.j2ee._EJSRemoteStatelessManagement_06214580_Tie._invoke(_EJSRemoteStatelessManagement_0621458
0_Tie.java:132)
at
com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:608)
at
com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:461)
at com.ibm.rmi.iiop.ORB.process(ORB.java:432)
at com.ibm.CORBA.iiop.ORB.process(ORB.java:1728)
at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2229)
at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:65)
at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:95)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1332)
Caused by: javax.management.JMRuntimeException: ADMN0022E: accesso negato
per l'operazione getStats su MBean JVM a causa
di credenziali insufficienti o vuote.
... 17 more
Thank You,
Roberto
>I try to use JMX to connect to WAS Admin but i have a security exception.
>I have global security enabled.
>How to "login" or set credential for JMX ?
>
>This is my code:
>
>
Roberto,
http://www-128.ibm.com/developerworks/websphere/techjournal/0304_williamson/williamson.html
has some info on setting security for JMX.
Ken
"Ken Hygh" <ken...@nc.rr.com> wrote in message
news:cs925v$5ame$1...@news.boulder.ibm.com...
WebSphere JAAS security is based on the code executing, not on user or
role (as in Weblogic). You have to create a was.policy file, add the
relevant permissions as listed in the link that Ken gave, and package it
with your application (EAR).
Br - Johan