1. Introduction to the Development Environment for Enterprise Server Add-On Components
3. Extending the Administration Console
4. Extending the asadmin Utility
About the Administrative Command Infrastructure of Enterprise Server
Representing an asadmin Command as a Java Class
Specifying the Name of an asadmin Command
Ensuring That an AdminCommand Implementation Is Stateless
Example of Adding an asadmin Command
Adding Parameters to an asadmin Command
Representing a Parameter of an asadmin Command
Identifying a Parameter of an asadmin Command
Specifying Whether a Parameter Is an Option or an Operand
Specifying the Name of an Option
Specifying the Long Form of an Option Name
Specifying the Short Form of an Option Name
Specifying the Acceptable Values of a Parameter
Specifying the Default Value of a Parameter
Specifying Whether a Parameter Is Required or Optional
Example of Adding Parameters to an asadmin Command
Adding Message Text Strings to an asadmin Command
Enabling an asadmin Command to Run
Setting the Context of an asadmin Command
Changing the Brand in the Enterprise Server CLI
5. Adding Container Capabilities
6. Packaging, Integrating, and Delivering an Add-On Component
This example shows a class that represents the asadmin command create-mycontainer.
The usage statement for this command is as follows:
asadmin create-mycontainer --originator any-character-string [--description any-character-string] [--enabled {true|false}] any-character-string
This command uses injection to specify that a running domain is required.
package com.example.mycontainer; import org.glassfish.api.admin.AdminCommand; import org.glassfish.api.admin.AdminCommandContext; import org.glassfish.api.I18n; import org.glassfish.api.Param; import org.jvnet.hk2.annotations.Service; import org.jvnet.hk2.annotations.Inject; import org.jvnet.hk2.annotations.Scoped; import org.jvnet.hk2.component.PerLookup; /** * Sample command */ @Service(name="create-mycontainer") @Scoped(PerLookup.class) public Class CreateMycontainer implements AdminCommand { @Inject Domain domain; @Param String originator; @Param(name="description", optional=true) @I18n("mydesc") String mycontainerDescription @Param (acceptableValues="true,false", defaultValue="false", optional=true) String enabled @Param(primary=true) String containername; /** * Executes the command with the command parameters passed as Properties * where the keys are the paramter names and the values the parameter values * @param context information */ public void execute(AdminCommandContext context) { // domain and originator are not null // mycontainerDescription can be null. } }
The following message text strings are defined in the file LocalStrings.properties for use by the command:
create-mycontainer.command=Creates a custom container create-mycontainer.command.originator=The originator of the container create-mycontainer.command.mydesc=A description of the container create-mycontainer.command.enabled=Whether the container is enabled or disabled create-mycontainer.command.containername=The container name
This example shows a class that represents the asadmin command list-runtime-environment. The command determines the operating system or runtime information for Enterprise Server
The usage statement for this command is as follows:
asadmin list-runtime-environment{runtime|os}
package com.example.env.cli; import org.glassfish.api.admin.AdminCommand; import org.glassfish.api.admin.AdminCommandContext; import org.glassfish.api.ActionReport; import org.glassfish.api.I18n; import org.glassfish.api.ActionReport.ExitCode; import org.glassfish.api.Param; import org.jvnet.hk2.annotations.Service; import org.jvnet.hk2.annotations.Inject; import org.jvnet.hk2.annotations.Scoped; import org.jvnet.hk2.component.PerLookup; import java.lang.management.ManagementFactory; import java.lang.management.OperatingSystemMXBean; import java.lang.management.RuntimeMXBean; /** * Demos asadmin CLI extension * */ @Service(name="list-runtime-environment") @Scoped(PerLookup.class) public class ListRuntimeEnvironmentCommand implements AdminCommand { // this value can be either runtime or os for our demo @Param(primary=true) String inParam; public void execute(AdminCommandContext context) { ActionReport report = context.getActionReport(); report.setActionExitCode(ExitCode.SUCCESS); // If the inParam is 'os' then this command returns operating system info // and if the inParam is 'runtime' then it returns runtime info. // Both of the above are based on mxbeans. if ("os".equals(inParam)) { OperatingSystemMXBean osmb = ManagementFactory.getOperatingSystemMXBean(); report.setMessage("Your machine operating system name = " + osmb.getName()); } else if ("runtime".equals(inParam)) { RuntimeMXBean rtmb = ManagementFactory.getRuntimeMXBean(); report.setMessage("Your JVM name = " + rtmb.getVmName()); } else { report.setActionExitCode(ExitCode.FAILURE); report.setMessage("operand should be either 'os' or 'runtime'"); } } }