Kedar Mhaswade wrote:
> Can you try calling getLoadedClassCount() directly like Lloyd suggested
> and see what you get?
It returns int 4833.
I can use the direct approach for those stats that aren't dynamic. For
instance all stats in RuntimeMXBean, except getUptime().
>
> I suspect some class loading issues here because since all MXBeans
> are interfaces, it is difficult to understand why it would throw
> an IllegalArgumentException.
> Can you post the entire stack trace?
It's IllegalAccessException
[#|2008-09-04T20:48:21.656-0400|SEVERE||org.glassfish.flashlight.datatree.impl.
ethodInvokerImpl|_ThreadID=15;_ThreadName=Thread-3;|The log message is null.
java.lang.IllegalAccessException: Class
org.glassfish.flashlight.datatree.impl.
ethodInvokerImpl can not access a member of class
sun.management.RuntimeImpl wi
h modifiers "public"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)
at java.lang.reflect.Method.invoke(Method.java:578)
at
org.glassfish.flashlight.datatree.impl.MethodInvokerImpl.getValue(Me
hodInvokerImpl.java:53)
at
com.sun.enterprise.v3.admin.GetCommand.getMonitorAttributes(GetComma
d.java:112)
at
com.sun.enterprise.v3.admin.GetCommand.execute(GetCommand.java:48)
at
com.sun.enterprise.v3.admin.CommandRunner.doCommand(CommandRunner.ja
a:286)
at
com.sun.enterprise.v3.admin.CommandRunner.doCommand(CommandRunner.ja
a:114)
at
com.sun.enterprise.v3.admin.CommandRunner.doCommand(CommandRunner.ja
a:94)
at
com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java
237)
at
com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:1
3)
at
com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.jav
:147)
at
com.sun.enterprise.v3.services.impl.ContainerMapper.service(Containe
Mapper.java:151)
at
com.sun.grizzly.http.DefaultProcessorTask.invokeAdapter(DefaultProce
sorTask.java:621)
at
com.sun.grizzly.http.DefaultProcessorTask.doProcess(DefaultProcessor
ask.java:552)
at
com.sun.grizzly.http.DefaultProcessorTask.process(DefaultProcessorTa
k.java:800)
at
com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFi
ter.java:152)
at
com.sun.enterprise.v3.services.impl.GlassfishProtocolChain.executePr
tocolFilter(GlassfishProtocolChain.java:70)
at
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.ja
a:103)
at
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.ja
a:89)
at
com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContext
ask.java:67)
at
com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask
java:56)
at
com.sun.grizzly.util.WorkerThreadImpl.processTask(WorkerThreadImpl.j
va:309)
at
com.sun.grizzly.util.WorkerThreadImpl.run(WorkerThreadImpl.java:168)
|#]
>
> -Kedar
>
>
> Jennifer Chou wrote:
>> Hi Lloyd,
>>
>> It's part of our monitoring design. All the stats are retrieved from
>> a TreeNode structure. I'm creating a MethodInvoker TreeNode
>> "loadedClassCount" so that getLoadedClassCount() will get invoked and
>> return a value when a client asks for node.getValue().
>> TreeNode tn = TreeNodeFactory.createMethodInvoker(nodeName, clBean,
>> "jvm", method);
>>
>> public static TreeNode createMethodInvoker (String name, Object
>> instance,
>> String category, Method m){
>>
>> I don't want to store the clBean.getLoadedClassCount() on the
>> treeNode as it is because that value is dynamic.
>>
>> Jennifer
>>
>> Lloyd Chambers wrote:
>>> Jennifer,
>>>
>>> Why are you introspecting the method?
>>>
>>> java.lang.management.ClassLoadingMXBean clBean =
>>> ManagementFactory.getClassLoadingMXBean();
>>> int count = clBean.getLoadedClassCount();
>>>
>>> ?
>>>
>>> Lloyd
>>>
>>>
>>>
>>> On Sep 4, 2008, at 4:17 PM, Jennifer Chou wrote:
>>>
>>>> Hi,
>>>>
>>>> I'm trying use method.invoke(..) on the MXBeans but I'm getting
>>>> IllegalAccessException on some but not all the MXBeans. Anybody
>>>> know why? And how to get around this problem?
>>>>
>>>> java.lang.management.ClassLoadingMXBean clBean =
>>>> ManagementFactory.getClassLoadingMXBean();
>>>> java.lang.reflect.Method method =
>>>> clBean.getClass().getMethod("getLoadedClassCount", (Class[]) null);
>>>> method.invoke(clBean, (Object[]) null);
>>>>
>>>> These get IllegalAccessException:
>>>> ClassLoadingMXBean
>>>> CompilationMXBean
>>>> GarbageCollectorMXBean
>>>> MemoryMXBean
>>>> MemoryMXBean
>>>>
>>>> These allow me to use method.invoke():
>>>> OperatingSystemMXBean
>>>> MemoryUsage
>>>>
>>>> Jennifer
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: admin-unsubscribe_at_glassfish.dev.java.net
>>>> For additional commands, e-mail: admin-help_at_glassfish.dev.java.net
>>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: admin-unsubscribe_at_glassfish.dev.java.net
>>> For additional commands, e-mail: admin-help_at_glassfish.dev.java.net
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: admin-unsubscribe_at_glassfish.dev.java.net
>> For additional commands, e-mail: admin-help_at_glassfish.dev.java.net
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: admin-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: admin-help_at_glassfish.dev.java.net
>