com.sun.enterprise.admin.remote
Class RemoteAdminCommand

java.lang.Object
  extended by com.sun.enterprise.admin.remote.RemoteAdminCommand
Direct Known Subclasses:
ServerRemoteAdminCommand

public class RemoteAdminCommand
extends Object

Utility class for executing remote admin commands. Each instance of RemoteAdminCommand represents a particular remote command on a particular remote server accessed using particular credentials. The instance can be reused to execute the same command multiple times with different arguments.

Arguments to the command are supplied using a ParameterMap passed to the executeCommand method. ParameterMap is a MultiMap where each key can have multiple values, although this class only supports a single value for each option. Operands for the command are stored as the option named "DEFAULT" and can have multiple values.

Before a command can be executed, the metadata for the command (in the form of a CommandModel) is required. The getCommandModel method will fetch the metadata from the server, save it, and return it. If the CommandModel for a command is known independently (e.g., stored in a local cache, or known a priori), it can be set using the setCommandModel method. If the metadata isn't known when the exectureCommand method is called, it will fetch the metadata from the server before executing the command.

Any files returned by the command will be stored in the current directory. The setFileOutputDirectory method can be used to control where returned files are saved.


Field Summary
protected  String authToken
           
protected  String host
           
protected  Logger logger
           
protected  String name
           
protected  List<String> operands
           
protected  ParameterMap options
           
protected  String output
           
protected  String password
           
protected  int port
           
protected  boolean prohibitDirectoryUploads
           
protected  boolean secure
           
protected  String user
           
 
Constructor Summary
RemoteAdminCommand(String name, String host, int port)
          Helper ctor
RemoteAdminCommand(String name, String host, int port, boolean secure, String user, String password, Logger logger)
           
RemoteAdminCommand(String name, String host, int port, boolean secure, String user, String password, Logger logger, String authToken, boolean prohibitDirectoryUploads)
          Construct a new remote command object.
 
Method Summary
protected  void addAdditionalHeaders(URLConnection urlConnection)
          Adds any headers needed for the current environment to the admin request.
protected  AuthenticationInfo authenticationInfo()
           
 String executeCommand(ParameterMap opts)
          Run the command using the specified arguments.
 Map<String,String> getAttributes()
          After a successful command execution, the attributes returned by the command are saved.
 CommandModel getCommandModel()
          Get the CommandModel for the command from the server.
protected  String getFromEnvironment(String name)
          Subclasses can override to supply parameter values from environment.
protected  HttpConnectorAddress getHttpConnectorAddress(String host, int port, boolean shouldUseSecure)
          Provides an HttpConnectorAddress for use in connecting to the desired admin listener.
static int getReadTimeout()
           
 String getUsage()
          Get the usage text.
 List<Header> headers()
          Return a modifiable list of headers to be added to the request.
protected  String reportAuthenticationException()
          Return the error message to be used in the AuthenticationException.
protected  boolean retryUsingSecureConnection(String host, int port)
          Called when a non-secure connection attempt fails and it appears that the server requires a secure connection.
 void setCommandModel(CommandModel commandModel)
          Set the CommandModel used by this command.
 void setConnectTimeout(int connectTimeout)
          Set the connect timeout for the URLConnection.
 void setFileOutputDirectory(File dir)
          Set the directory in which any returned files will be stored.
 void setInteractive(boolean state)
          Set the interactive mode for the command.
 void setReadTimeout(int readTimeout)
          Set the read timeout for the URLConnection.
 void setResponseFormatType(String responseFormatType)
          Set the response type used in requests to the server.
 void setUserOut(OutputStream userOut)
          If set, the raw response from the command is written to the specified stream.
protected  boolean updateAuthentication()
          Return true if we're successful in collecting new information (and thus the caller should try the request again).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

output

protected String output

name

protected String name

host

protected String host

port

protected int port

secure

protected boolean secure

user

protected String user

password

protected String password

logger

protected Logger logger

authToken

protected String authToken

prohibitDirectoryUploads

protected boolean prohibitDirectoryUploads

options

protected ParameterMap options

operands

protected List<String> operands
Constructor Detail

RemoteAdminCommand

public RemoteAdminCommand(String name,
                          String host,
                          int port)
                   throws CommandException
Helper ctor

Throws:
CommandException

RemoteAdminCommand

public RemoteAdminCommand(String name,
                          String host,
                          int port,
                          boolean secure,
                          String user,
                          String password,
                          Logger logger)
                   throws CommandException
Throws:
CommandException

RemoteAdminCommand

public RemoteAdminCommand(String name,
                          String host,
                          int port,
                          boolean secure,
                          String user,
                          String password,
                          Logger logger,
                          String authToken,
                          boolean prohibitDirectoryUploads)
                   throws CommandException
Construct a new remote command object. The command and arguments are supplied later using the execute method in the superclass.

Throws:
CommandException
Method Detail

setResponseFormatType

public void setResponseFormatType(String responseFormatType)
Set the response type used in requests to the server. The response type is sent in the User-Agent HTTP header and tells the server what format of response to produce.


setUserOut

public void setUserOut(OutputStream userOut)
If set, the raw response from the command is written to the specified stream.


setCommandModel

public void setCommandModel(CommandModel commandModel)
Set the CommandModel used by this command. Normally the CommandModel will be fetched from the server using the getCommandModel method, which will also save the CommandModel for further use. If the CommandModel is known in advance, it can be set with this method and avoid the call to the server.


setReadTimeout

public void setReadTimeout(int readTimeout)
Set the read timeout for the URLConnection.


getReadTimeout

public static int getReadTimeout()

setConnectTimeout

public void setConnectTimeout(int connectTimeout)
Set the connect timeout for the URLConnection.


setInteractive

public void setInteractive(boolean state)
Set the interactive mode for the command. By default, the command is interactive.


getCommandModel

public CommandModel getCommandModel()
                             throws CommandException
Get the CommandModel for the command from the server. If the CommandModel hasn't been set, it's fetched from the server.

Returns:
the model for the command
Throws:
CommandException - if the server can't be contacted

setFileOutputDirectory

public void setFileOutputDirectory(File dir)
Set the directory in which any returned files will be stored. The default is the user's home directory.


headers

public List<Header> headers()
Return a modifiable list of headers to be added to the request.


executeCommand

public String executeCommand(ParameterMap opts)
                      throws CommandException
Run the command using the specified arguments. Return the output of the command.

Throws:
CommandException

getAttributes

public Map<String,String> getAttributes()
After a successful command execution, the attributes returned by the command are saved. This method returns those saved attributes.


updateAuthentication

protected boolean updateAuthentication()
Return true if we're successful in collecting new information (and thus the caller should try the request again). Subclasses can override to (e.g.) collect updated authentication information by prompting the user. The implementation in this class returns false, indicating that the authentication information was not updated.


getFromEnvironment

protected String getFromEnvironment(String name)
Subclasses can override to supply parameter values from environment. The implementation in this class returns null, indicating that the name is not available in the environment.


retryUsingSecureConnection

protected boolean retryUsingSecureConnection(String host,
                                             int port)
Called when a non-secure connection attempt fails and it appears that the server requires a secure connection. Subclasses can override to indicate that the connection should The implementation in this class returns false, indicating that the connection should not be retried.


reportAuthenticationException

protected String reportAuthenticationException()
Return the error message to be used in the AuthenticationException. Subclasses can override to provide a more detailed message, for example, indicating the source of the password that failed. The implementation in this class returns a default error message.


getHttpConnectorAddress

protected HttpConnectorAddress getHttpConnectorAddress(String host,
                                                       int port,
                                                       boolean shouldUseSecure)
Provides an HttpConnectorAddress for use in connecting to the desired admin listener.

This implementation works for true admin clients and will not work correctly for commands submitted to instances from inside the DAS. (That is done from the implementation in ServerRemoteAdminCommand which extends this class.)

This code constructs the HttpConnectorAddress in a way that uses either no SSLSocketFactory (if security is off) or uses an SSLSocketFactory linked to the asadmin truststore.

Parameters:
host - the host name to which the connection should be made
port - the admin port on that host
shouldUseSecure - whether SSL should be used to connect or not
Returns:

addAdditionalHeaders

protected void addAdditionalHeaders(URLConnection urlConnection)
Adds any headers needed for the current environment to the admin request.

Parameters:
urlConnection -

authenticationInfo

protected AuthenticationInfo authenticationInfo()

getUsage

public String getUsage()
Get the usage text. If we got usage information from the server, use it.

Returns:
usage text


Copyright © 2012 GlassFish Community. All Rights Reserved.