dev@glassfish.java.net

Re: private administration commands

From: Kedar Mhaswade <Kedar.Mhaswade_at_Sun.COM>
Date: Fri, 03 Apr 2009 10:51:35 -0700

Jerome Dochez wrote:
> which is exactly why I have asked you to start looking into typing
> command outputs.

I thought that to facilitate more structured output like the CLI spec
says at:
https://glassfish.dev.java.net/nonav/v3/admin/planning/j109/admin-cli.html#protocol
(still incomplete)

What's the motivation? Where's the need? Why are they private? How does
one decide what's private? Is it the non-modular part of the modular
core? Can a module developer provide a private command? Why would s/he
hold it back from exposing it via asadmin?
>
> jerome
>
> On Apr 3, 2009, at 10:33 AM, Kedar Mhaswade wrote:
>
>> I think this is just weird.
>>
>> It looks like "commands" taking form of "API". I haven't
>> seen any motivation of doing this. The private-public interface
>> is always a slippery slope and the output of an admin command should
>> never be a programming interface.
>>
>> -Kedar
>> Jerome Dochez wrote:
>>> Hi All
>>> Hong asked me if we could add the ability to have private commands to
>>> v3. Private commands are remote commands that can be used by our
>>> tools like jsr88client, IDE tools, and GUI but users would not have
>>> access to using the normal CLI client. The point is not to protect or
>>> securely prevent commands to be executed by random users, it's simply
>>> about obfuscating them so users don't access them innocently as they
>>> won't be supported across releases. Please note that the current
>>> mechanism could be extended to secure invocations but I think it's an
>>> overkill at this point.
>>> I have just added the feature so to define a new private command you
>>> just need to annotate your AdminCommand implementation with
>>> @Visibility annotation and let the system do the rest.
>>> example :
>>> @Service(name="my-private-command")
>>> @Visibility(Private.class)
>>> public class MyPrivateCommand implements AdminCommand {
>>> ...
>>> }
>>> So far there are only two types of visibility defined in the system
>>> @Visibility(Public.class)
>>> @Visibility(Private.class)
>>> we could add more to bind commands to even stricter clients like for
>>> instance @Visbility(MySuperTool.class) but I don't think we will have
>>> to go that far. If you don't annotate your AdminCommand
>>> implementation it gets the default visibility of Public.
>>> If you try to invoke a private command from the asadmin CLI, you will
>>> get a disappointing result but feel free to try. Private commands are
>>> available on a different context root than the one used by the CLI.
>>> Let me know if you have any questions.
>>> ---------------------------------------------------------------------
>>> 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
>