Package com.sun.jmx.remote.generic

Source Code of com.sun.jmx.remote.generic.DefaultConfig

/*
* @(#)file      DefaultConfig.java
* @(#)author    Sun Microsystems, Inc.
* @(#)version   1.27
* @(#)lastedit  07/03/08
* @(#)build     @BUILD_TAG_PLACEHOLDER@
*
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved.
*
* The contents of this file are subject to the terms of either the GNU General
* Public License Version 2 only ("GPL") or the Common Development and
* Distribution License("CDDL")(collectively, the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy of the
* License at http://opendmk.dev.java.net/legal_notices/licenses.txt or in the
* LEGAL_NOTICES folder that accompanied this code. See the License for the
* specific language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file found at
*     http://opendmk.dev.java.net/legal_notices/licenses.txt
* or in the LEGAL_NOTICES folder that accompanied this code.
* Sun designates this particular file as subject to the "Classpath" exception
* as provided by Sun in the GPL Version 2 section of the License file that
* accompanied this code.
*
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
*
*       "Portions Copyrighted [year] [name of copyright owner]"
*
* Contributor(s):
*
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding
*
*       "[Contributor] elects to include this software in this distribution
*        under the [CDDL or GPL Version 2] license."
*
* If you don't indicate a single choice of license, a recipient has the option
* to distribute your version of this file under either the CDDL or the GPL
* Version 2, or to extend the choice of license to its licensees as provided
* above. However, if you add GPL Version 2 code and therefore, elected the
* GPL Version 2 license, then the option applies only if the new code is made
* subject to such option by the copyright holder.
*
*/

package com.sun.jmx.remote.generic;

import java.util.Map;

import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.InstanceNotFoundException;

import javax.management.remote.JMXConnectorFactory;

import com.sun.jmx.remote.generic.ServerAdmin;
import com.sun.jmx.remote.generic.SynchroMessageConnection;
import com.sun.jmx.remote.generic.SynchroMessageConnectionServer;

import com.sun.jmx.remote.opt.util.EnvHelp;

public class DefaultConfig {

    /**
     * <p>Name of the attribute that specifies the maximum number of
     * threads used at the server side for each client connection.</p>
     */
    public final static String SERVER_MAX_THREADS =
  "jmx.remote.x.server.max.threads";

    /**
     * Returns the maximum number of threads used at server side for
     * each client connection.  Its default value is 10.
     */
    public static int getServerMaxThreads(Map env) {
  return (int) EnvHelp.getIntegerAttribute(env, SERVER_MAX_THREADS,
             10, 1, Integer.MAX_VALUE);
    }

    /**
     * <p>Name of the attribute that specifies the minimum number of
     * threads used at the server side for each client connection.</p>
     */
    public final static String SERVER_MIN_THREADS =
  "jmx.remote.x.server.min.threads";

    /**
     * Returns the minimum number of threads used at server side for
     * each client connection.  Its default value is 1.
     */
    public static int getServerMinThreads(Map env) {
  return (int) EnvHelp.getIntegerAttribute(env, SERVER_MIN_THREADS,
             1, 1, Integer.MAX_VALUE);
    }

    /**
     * <p>Name of the attribute that specifies the timeout in
     * milliseconds for a client request to wait for its response.
     * The default value is <code>Long.MAX_VALUE</code>.
     */
    public static final String REQUEST_WAITING_TIME =
  "jmx.remote.x.request.timeout";

    /**
     * Returns the timeout for a client request.
     * Its default value is <code>Long.MAX_VALUE</code>.
     */
    public static long getRequestTimeout(Map env) {
  return EnvHelp.getIntegerAttribute(env, REQUEST_WAITING_TIME,
             Long.MAX_VALUE, 0, Long.MAX_VALUE);
    }


    /**
     * <p>Name of the attribute that specifies the timeout in
     * milliseconds for a server to finish connecting with a new client.
     * Zero means no timeout.
     * If a user-specified value is less than or equal to zero, or more than the max value,
     * Zero will be used.
     * The default value is zero.
     */
    public static final String SERVER_SIDE_CONNECTING_TIMEOUT =
  "jmx.remote.x.server.side.connecting.timeout";

    /**
     * Returns the connecting timeout at server side for a new client, zero means no timeout.
     * If a user-specified value is less than zero, zero will be used.
     * The default value is 0.
     */

    public static long getConnectingTimeout(Map env) {
  long l;

  try {
      l = EnvHelp.getIntegerAttribute(env, SERVER_SIDE_CONNECTING_TIMEOUT,
             0, 0, Long.MAX_VALUE);
  } catch (IllegalArgumentException iae) {
      l = 0;
  }

  return l;
    }

    /**
     * <p>Name of the attribute that specifies a ServerAdmin object.
     * The value associated with this attribute is ServerAdmin object</p>
     */
    public static final String SERVER_ADMIN =
  "com.sun.jmx.remote.server.admin";

    /**
     * Returns an instance of ServerAdmin.  Its default value is a
     * <code>com.sun.jmx.remote.opt.security.AdminServer</code>.
     */
    public static ServerAdmin getServerAdmin(Map env) {
  ServerAdmin admin;
  final Object o = env.get(SERVER_ADMIN);

  if (o == null) {
      admin = new com.sun.jmx.remote.opt.security.AdminServer(env);
  } else if (o instanceof ServerAdmin) {
      admin = (ServerAdmin)o;
  } else {
      final String msg =
    "The specified attribute \"" + SERVER_ADMIN +
    "\" is not a ServerAdmin object.";
      throw new IllegalArgumentException(msg);
  }

  return admin;
    }

    /**
     * <p>Name of the attribute that specifies a ClientAdmin object.
     * The value associated with this attribute is ClientAdmin object</p>
     */
    public static final String CLIENT_ADMIN =
  "com.sun.jmx.remote.client.admin";

    /**
     * Returns an instance of ClientAdmin.  Its default value is a
     * <code>com.sun.jmx.remote.opt.security.AdminClient</code>.
     */
    public static ClientAdmin getClientAdmin(Map env) {
  ClientAdmin admin;
  final Object o = env.get(CLIENT_ADMIN);

  if (o == null) {
      admin = new com.sun.jmx.remote.opt.security.AdminClient(env);
  } else if (o instanceof ClientAdmin) {
      admin = (ClientAdmin)o;
  } else {
      final String msg =
    "The specified attribute \"" + CLIENT_ADMIN +
    "\" is not a ClientAdmin object.";
      throw new IllegalArgumentException(msg);
  }

  return admin;
    }

    /**
     * <p>Name of the attribute that specifies a
     * <code>SynchroMessageConnectionServer</code> object.  The value
     * associated with this attribute is a
     * <code>SynchroMessageConnectionServer</code> object</p>
     */
    public static final String SYNCHRO_MESSAGE_CONNECTION_SERVER =
  "com.sun.jmx.remote.generic.synchro.server";

    /**
     * Returns a <code>SynchroMessageConnectionServer</code> object
     * specified in the <code>Map</code> object. Returns null if it is
     * not specified in the map.
     */
    public static SynchroMessageConnectionServer
      getSynchroMessageConnectionServer(Map env) {
  SynchroMessageConnectionServer ret = null;
  if (env != null) {
      ret = (SynchroMessageConnectionServer)
    env.get(SYNCHRO_MESSAGE_CONNECTION_SERVER);
  }

  return ret;
    }

    /**
     * <p>Name of the attribute that specifies a
     * <code>ClientSynchroMessageConnection</code> object.  The value
     * associated with this attribute is a
     * <code>ClientSynchroMessageConnection</code> object</p>
     */
    public static final String CLIENT_SYNCHRO_MESSAGE_CONNECTION =
  "com.sun.jmx.remote.generic.synchro.client";

    /**
     * Returns a <code>ClientSynchroMessageConnection</code> object
     * specified in the <code>Map</code> object. Returns null if it is
     * not specified in the map.
     */
    public static ClientSynchroMessageConnection
      getClientSynchroMessageConnection(Map env) {
  ClientSynchroMessageConnection ret = null;
  if (env != null) {
      ret = (ClientSynchroMessageConnection)
    env.get(CLIENT_SYNCHRO_MESSAGE_CONNECTION);
  }

  return ret;
    }

    /**
     * <p>Name of the attribute that specifies the timeout in
     * milliseconds for a client to wait for its state to become
     * connected.  The default value is 0.</p>
     */
    public static final String TIMEOUT_FOR_CONNECTED_STATE =
  "jmx.remote.x.client.connected.state.timeout";

    /**
     * Returns the timeout in milliseconds for a client to wait for
     * its state to become connected.  The default timeout is 1
     * second.</p>
     */
    public static long getTimeoutForWaitConnectedState(Map env) {
  return EnvHelp.getIntegerAttribute(env, TIMEOUT_FOR_CONNECTED_STATE,
             1000, 1, Long.MAX_VALUE);
    }

    /**
     * <p>Name of the attribute that specifies whether or not we set
     * ReuseAddress flag to a Server Socket. Its default value is false</p>
     */
    public final static String SERVER_REUSE_ADDRESS =
  "jmx.remote.x.server.reuse.address";

    /**
     * Returns a value telling whether or not we set
     * ReuseAddress flag to a Server Socket.  Its default value is false.
     */
    public static boolean getServerReuseAddress(Map env) {
  final Object o;

  if (env == null || (o = env.get(SERVER_REUSE_ADDRESS)) == null)
      return false;

  if (o instanceof Boolean) {
      return ((Boolean)o).booleanValue();
  } else if (o instanceof String) {
      return Boolean.valueOf((String)o).booleanValue();
  }

  throw new IllegalArgumentException("Attribute "+SERVER_REUSE_ADDRESS+
             " value must be Boolean or String.");
    }

    /**
     * <p>Name of the attribute that specifies whether or not do reconnection if
     * the client heartbeat
     * gets an InterruptedIOException because of a request timeout.
     * Its default value is false.</p>
     */
    public static final String TIMEOUT_RECONNECTION =
  "jmx.remote.x.client.timeout.reconnection";

    /**
     * Returns a value telling whether or not we do reconnection if the client
     * heartbeat gets an InterruptedIOException because of a request timeout.
     * Its default value is false.
     */
    public static boolean getTimeoutReconnection(Map env) {
  final Object o;

  if (env == null || (o = env.get(TIMEOUT_RECONNECTION)) == null)
      return false;

  if (o instanceof Boolean) {
      return ((Boolean)o).booleanValue();
  } else if (o instanceof String) {
      return Boolean.valueOf((String)o).booleanValue();
  }

  throw new IllegalArgumentException("Attribute "+TIMEOUT_RECONNECTION+
             " value must be Boolean or String.");
    }
}
TOP

Related Classes of com.sun.jmx.remote.generic.DefaultConfig

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.