dev@glassfish.java.net

Re: MBean operation not supported

From: Amy Roh <Amelia.Roh_at_Sun.COM>
Date: Fri, 19 Jan 2007 13:57:19 -0800

kedar wrote:
>
>
> Amy Roh wrote:
>
>> kedar wrote:
>>
>>> Oh that message is simply a classic
>>> problem of not being able to provide
>>> a "rich" java object like "Context" to
>>> this method on HTML page, that's all.
>>
>>
>> Oh I Wish that was just the case. However, method invoke fails with
>> ReflectionException although I can see the method and signature/param
>> is correct. Perhaps it's related to passing a "rich" java object
>> since methods that take String get invoked fine.
>
> I think I am not explaining it right.
> On HTML adaptor, primitive Java Objects can easily be sent as params, by
> entering their value in the text field. That's not true for the
> non-primitive Java Objects and Arrays. So, if your method accepts
> such an object, it is simply not "invokable" from HTML adaptor.
>
> So, I guess I don't understand what you mean when you say, "method invoke
> fails ..". How do you invoke it? There is no "button" do so.

Sorry for not being clear. No, I don't invoke it from HTML adaptor.
The adaptor was just for me to view MBean information to check its
availability.

I invoke it in my code (added code is in
com/sun/enterprise/web/WebContainer.java) like this -

MBeanServer.invoke(deployer, "manageApp",
                    new Object[] {context},
                    new String[] {"org.apache.catalina.Context"});

which fails with the exception although the method is available with
right signature.

Thanks,
Amy
> Kedar
>
>>
>> Thanks,
>> Amy
>>
>>>
>>> This unsupported method is basically
>>> accepting Context object and simply
>>> speaking there is no way to provide
>>> that on the page!
>>>
>>> Actually, this brings up a good point and
>>> I am copying Eamonn, the JMX spec lead about
>>> MBean best practices. This MBean method is
>>> not a good one because
>>> 1- it does not use the Open types.
>>> 2- it is not possible to invoke it from a
>>> pure JMX client like JConsole.
>>>
>>> Note that MBeans are a little different beasts
>>> from the Java objects :) No need to worry, just
>>> a question of following best practices.
>>>
>>> If you use JConsole, see the MemoryMXBean and you'll
>>> appreciate what open types are.
>>>
>>> Regards,
>>> Kedar
>>>
>>>
>>> Amy Roh wrote:
>>>
>>>> kedar wrote:
>>>>
>>>>> I agree with Lloyd, when it comes to the GlassFish
>>>>> Platform MBeans. To be precise, the "amx:" MBeans
>>>>> are the ones that the clients can "depend on" to
>>>>> manage GlassFish. The "com.sun.appserv:" MBeans are
>>>>> not supported. You are on your own, when you call
>>>>> these MBeans. In that sense, this is a reserved MBean
>>>>> domain that you should leave alone. In future, we will
>>>>> try to hide those MBeans from our clients.
>>>>>
>>>>> This however, does not mean that you can't have your
>>>>> own MBeans. Actually, your application code or explicit
>>>>> admin operation does allow to deploy your own MBeans and
>>>>> they will be in a domain called "user:". This relates
>>>>> to our feature of "custom MBeans" and several folks have
>>>>> used that feature. Look at Admin console or asadmin
>>>>> commands like "create-mbean".
>>>>>
>>>>> Amy: What MBeans (object names) do you refer to, and why
>>>>> do you want to invoke those MBean operations?
>>>>
>>>>
>>>>
>>>> I'm trying to invoke Catalina Deployer MBean method. The MBean is
>>>> created after I embed Tomcat so you can think of it as my own MBean.
>>>>
>>>> Again, although the method is visible but "not operational". Trying
>>>> to figure out why and where the MBeanServer is making the method
>>>> "not operational".
>>>>
>>>> If you're on swan, you can access my mbean -
>>>>
>>>> http://asengsol1.sfbay.sun.com:8082/ViewObjectRes//Catalina%3Atype%3DDeployer%2Chost%3Dlocalhost
>>>>
>>>>
>>>> Description of manageApp (Operation Not Supported)
>>>> void manageApp (org.apache.catalina.Context)context
>>>>
>>>> manageApp operation is listed but says "Operation Not Supported".
>>>>
>>>> Thanks,
>>>> Amy
>>>>
>>>>>
>>>>> Thanks,
>>>>> Kedar
>>>>>
>>>>> Lloyd L Chambers wrote:
>>>>>
>>>>>> Amy,
>>>>>>
>>>>>> Most all MBeans that have a JMX domain other than "amx" are
>>>>>> private and should not be used. AMX are the public ones, and
>>>>>> there are no unsupported methods.
>>>>>>
>>>>>> The com.sun.appserv MBeans have a fair number of unsupported
>>>>>> methods; the generic code makes no attempt to remove inappropriate
>>>>>> methods from the MBeanInfo of subclasses.
>>>>>>
>>>>>> Lloyd Chambers
>>>>>>
>>>>>>
>>>>>> On Jan 19, 2007, at 10:50 AM, Amy Roh wrote:
>>>>>>
>>>>>>> Hi guys,
>>>>>>>
>>>>>>> Do you know why some MBeans operations are "not supported"?
>>>>>>>
>>>>>>> I do see the method available in MBeanInfo and MBeanOperationInfo
>>>>>>> and the method is public and available through mbean descriptor.
>>>>>>>
>>>>>>> However, when I view the MBean through HTML Adaptor I do see the
>>>>>>> method listed but it also says "(Operation Not Supported)"
>>>>>>>
>>>>>>> After looking at various MBeans, it seems that methods that take
>>>>>>> any parameters other than Object or String says "Operation Not
>>>>>>> Supported", perhaps serialization issue(?).
>>>>>>>
>>>>>>> Is there a way to use these "available" methods without getting
>>>>>>> "ReflectionException" when invoked?
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Amy
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>>
>>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>