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

Security Exception using JMX in WAS 6

6 views
Skip to first unread message

Roberto

unread,
Jan 14, 2005, 10:34:25 AM1/14/05
to
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:

(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


Ken Hygh

unread,
Jan 14, 2005, 1:14:26 PM1/14/05
to
Roberto wrote:

>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

Roberto

unread,
Jan 16, 2005, 9:20:56 AM1/16/05
to
TY Ken
I read the document and i see to put somethink is was.policy.
But i think that my java code must authenticate to connect to WAS.
Otherwise everyone can use Administration action!
Where i can found an example ?
ty


"Ken Hygh" <ken...@nc.rr.com> wrote in message
news:cs925v$5ame$1...@news.boulder.ibm.com...

Johan

unread,
Jan 17, 2005, 5:50:19 AM1/17/05
to
Roberto wrote:
> TY Ken
> I read the document and i see to put somethink is was.policy.
> But i think that my java code must authenticate to connect to WAS.
> Otherwise everyone can use Administration action!
> Where i can found an example ?
> ty

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

0 new messages