Package org.glassfish.api.admin
Admin commands in GlassFish
Basic Support
Commands are annotated withService
annotation and must implement the
AdminCommand
contract. Commands are looked up based on the @Service
Service.name()
attribute.
Commands can be singleton or instantiated at each invocation depending on the
invalid reference
org.jvnet.hk2.annotations.Scope
Inject
dependencies but will have
all @{link org.glassfish.api.admin.Param} dependencies injected for each invocation.
more to be added to describe the v3 behaviors.
Supplemental Commands
A supplemental command is an administrative command that will supplement the execution of an existing command. Although most supplemental commands can execute in isolation, they usually represent added administrative tasks that can be optionally installed inside a GlassFish installation and need to be notified when higher level administrative requests are invoked. A supplemental command must be annotated with theSupplemental
annotation.
For instance, a supplemental command might configure a particular load-balancer when instances are created or deleted within a cluster. Usually, this required complicated scripts to first create the instance and then invoke some subsequent commands to configure the load-balancer. With supplemental commands, the load-balancer supplemental command can attach itself to the create or delete instance methods and be automatically invoked by the administration framework when the supplemented command is invoked by the user.
A supplemental command usually run after the supplemented command has finished running successfully. If the
supplemented command fail to execute, none of the supplemental commands should be invoked. A supplemental command can
request to be invoked before the supplemented command. In such a case, these commands must have a
invalid reference
UndoableCommand
invalid reference
Rollbak
It might be possible for a supplemental command to fail executing and since such commands execute usually after the
supplemented command has finished executing, a rollbacking mechanism can be described though the combination of the
ExecuteOn.ifFailure()
annotation value and the
invalid reference
UndoableCommand
invalid reference
UndoableCommand
invalid reference
UndoableCommand
Supplemental commands can be a wrapper for existing external commands, and therefore can use a very different set of
parameters than the ones provided to the supplemented command. Supplemental commands can use
Supplemental.bridge()
annotation value to translate or bridge the parameters names
and values from the supplemented command to the supplemental ones.
Clustering support
A command can be optionally annotated withExecuteOn
to specify the clustering
support. A command not annotated with ExecuteOn
will have a virtual @ExecuteOn annotation with the default
values. (note to asarch, this is mainly for backward compatibility, can be revisited).
A Clustered command will be executed on the server receiving the command from the user (the DAS usually) and any of
the remote instances identified by the ExecuteOn.executor()
instance.
For a command to not be "cluster" available requires the following annotation :
invalid input: '@'ExecuteOn(RuntimeType.DAS)
Whether commands are executed in parallel or synchronously is immaterial to the user as long as he gets proper feedback on the remote commands executions successes or failures.
Rollbacking
Supplemental and clustered commands execute separately and can create issues when one of the invocation fails. Commands can optionally implement theinvalid reference
UndoableCommand
In a clustering environment, any of the remote invocations can rollback the entire set of changes depending on the
values of ExecuteOn.ifFailure()
and
ExecuteOn.ifOffline()
annotation values.
A Supplemental command can force the roll-backing of the supplemented command using the
Supplemental.ifFailure()
annotation value.
-
ClassDescriptionAllows command developers to declare what resources are affected by the command and what actions must be authorized on each to allow the command to execute.Represents an authorization check: a resource and an action to be authorized on that resource.Declares multiple class-level
@AccessRequired
authorization steps, typically each identifying different resources and/or different actionsDeclares access control for creating a new childConfigBean
in a collection on an existingConfigBean
.Declares multiple authorization checks for creating the same single newConfigBean
.Declares access control on an existing, non-nullConfigBean
.Utility methods used both from AccessCheck and from CommandSecurityChecker.This is an admin command interface, command implementations have to be stateless and should also have ainvalid reference
org.jvnet.hk2.component.Scope
PerLookup
Useful services for administrative commands implementationMost ofAdminCommandContext
attributes are used in any phase of command execution (supplemental commands, replication) but some of them must be different for every instance.Useful services for administrative commands implementationEvents broker for AdminCommands.Listener for AdminCommand events.Place relevant for utility methodsThe implementation of the admin command lock.The status of a suspend command attempt.The AdminCommandLockException is generated when a command can not acquire an AdminCommandLock.The AdminCommandLockTimeoutException is generated when a command can not acquire an AdminCommandLock within the allotted time.Behavior required of all command classes which provide any of their own custom authorization enforcement.A specialized CommandException that indicates an authentication failure.Defines the API for services which provide additional information to be used during authorization.A ClusterExecutor is responsible for remotely executing commands.A marker annotation for annotations that indicate that an AdminCommand functionality is to be extended in a certain way.CommandAspectBase<T extends Annotation>Empty implementation of CommandAspectImpl.This is an extensible facade class to support options which can be passed from the client to server and uses the CommandAspectsCommandAspectImpl<T extends Annotation>Interface for defining aspects for AdminCommands.Annotation used to indicate what type of lock to acquire before executing an admin command.The type of command lock.Model for an administrative commandModel for a command parameter.Interface denoting administrative commands that provide their model.A marker interface to indicate classes that are used to pass parameters to the parameters method of the CommandRunner.CommandInvocation API.Base interface of progress status implementation.CommandRunner is a service that allows you to run administrative commands.CommandInvocation defines a command excecution context like the requested name of the command to execute, the parameters of the command, etc...Utility class for command framework.Annotation to qualify when an action like a command is targeted to be run on a cluster or a set of instances.Defines the expected behaviour from the system when a supplemental command (could be a local or remote invocation) fails to execute properly.Service to monitor changes to files.Annotation used to indicate what type of failure action should be performed if the annotated method was to return a failure error code or throw an exception.This holds the late status of the instance, the commands that are Queued up while the instance was starting etc.Represents running (or finished) command instance.This is the contract responsible for creating JobThis is a contract which is used to locate all the jobs.xml files on server startupThis is the contract for the JobManagerService The JobManager will be responsible for 1. generating unique ids for jobs 2. serving as a registry for jobs 3. creating thread pools for jobs 4.removing expired jobsContainer for checkpoint related objectsThis annotation will be added for commands which need to be managed by Job ManagerMarks a POJO class, a field, or a method as a named resource.A parameter mapper acts as a bridge between supplied parameters (by the user on the command line for instance) and expected parameters by a action.Provided mapper that does not change parameters names or values from the input set.A map from parameter name to a list of parameter values.Resolves password alias expressions of the form ${ALIAS=aliasName} using an internal password alias store while also accepting passwords themselves which are not translated.Represents a fully-functional password alias store.Interface for admin command payloads--data carried in the http request and response which flow between the admin client and the server.Public API for inbound payloads.Public API for outbound Payloads.Public API for the payload Part.Process environment allow access to information related to the execution or process.Enumeration of the supported process types Server is the application server ACC is the application client Other is a standalone java.ProgressStatus of a command.Interface denoting administrative commands that provide theirProgress
annotation.API for providing information about work progress inAdminCommand
implementations.annotation to redirect a rest request from CRUD operations on the configuration tree to a command invocation (like deploy, undeploy).List of @RestRedirectDefines a server process type.Represents the ability (and responsibility) of an AdminCommand implementation to provide its own authorization logic, instead of relying on the command framework and the AccessRequired annotation to do so.Allow access to the environment under which GlassFish operates.Created by IntelliJ IDEA.Annotation to define a supplemental command A supplemental command runs when a main command implementation is ran, it can be used to attach behaviours to existing commands without modifying the original implementation.enumeration of when a supplemental command can be invoked with regards to the supplemented command execution.An executor responsible for executing supplemental commands registered for a main commandConvenience implementation that delegate to a provided system executor.Represents command wrapped withinvalid reference
CommandWrapperImpl