com.gemstone.gemfire.admin.jmx.Agent Maven / Gradle / Ivy
/*
* Copyright (c) 2010-2015 Pivotal Software, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you
* may not use this file except in compliance with the License. You
* may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License. See accompanying
* LICENSE file.
*/
package com.gemstone.gemfire.admin.jmx;
import com.gemstone.gemfire.LogWriter;
import com.gemstone.gemfire.admin.AdminException;
import com.gemstone.gemfire.admin.AdminDistributedSystem;
//import javax.management.MBeanException;
import javax.management.MalformedObjectNameException;
import javax.management.MBeanServer;
import javax.management.ObjectName;
/**
* A server component that provides administration-related information
* about a GemFire distributed system via the Java Management
* Extension JMX API. When a JMX Agent
is created, it
* registers an MBean that represents {@link #getObjectName itself}.
* Click here for a
* description of the attributes, operations, and notifications of
* this and other GemFire JMX MBeans.
*
*
*
* The GemFire JMX Agent currently supports three JMX "adapters"
* through which clients can access the GemFire management beans: an
* "HTTP adapter" that allows a web browser client to view and modify
* management beans via HTTP or HTTPS, an "RMI adapter" that allows
* Java programs to access management beans using Remote Method
* Invocation, and an "SNMP adapter" that allows SNMP to access
* management beans. Information about configuring these adapters can
* be found in {@link AgentConfig}.
*
*
*
* In most distributed caching architectures, JMX administration
* agents are run in their own processes. A stand-alone JMX agent is
* managed using the agent
command line utility:
*
*
* $ agent start
*
*
* This class allows a GemFire application VM to host a JMX management
* agent. Architectures with "co-located" JMX agents reduce the
* number of overall proceses required. However, hosting a JMX
* management agent in the same VM as a GemFire application is not
* generally recommended because it adds extra burden to an
* application VM and in the event that the application VM exits the
* administration information will no longer be available.
*
* @see AgentConfig
* @see AgentFactory
*
* @author David Whitlock
* @since 4.0
* @deprecated as of 7.0 use the {@link com.gemstone.gemfire.management} package instead
*/
public interface Agent {
/** Lookup name for RMIConnector when rmi-registry-enabled is true */
public static final String JNDI_NAME = "/jmxconnector";
////////////////////// Instance Methods //////////////////////
/**
* Returns the configuration object for this JMX Agent.
*/
public AgentConfig getConfig();
/**
* Starts this JMX Agent and its associated adapters. This method
* does not {@linkplain #connectToSystem connect} to the distributed
* system.
*/
public void start();
/**
* Returns the JMX MBeanServer
with which GemFire
* MBeans are registered or null
if this
* Agent
is not started.
*/
public MBeanServer getMBeanServer();
/**
* {@linkplain #disconnectFromSystem Disconnects} from the
* distributed system and stops this JMX Agent and all of its
* associated adapters.
*/
public void stop();
/**
* Returns the ObjectName
of the JMX management bean
* that represents this agent or null
if this
* Agent
has not been started.
*/
public ObjectName getObjectName();
/**
* Returns whether or not this JMX Agent
is currently
* providing information about a distributed system.
*/
public boolean isConnected();
/**
* Connects to the distributed system described by this Agent
's
* configuration.
*
* @return The object name of the system that the Agent
* is now connected to.
*/
public ObjectName connectToSystem()
throws AdminException, MalformedObjectNameException;
/**
* Returns the AdminDistributedSystem
that underlies
* this JMX Agent
or null
is this agent is
* not {@linkplain #isConnected connected}.
*/
public AdminDistributedSystem getDistributedSystem();
/**
* Returns the object name of the JMX MBean that represents the
* distributed system administered by this Agent
or
* null
if this Agent
has not {@linkplain
* #connectToSystem connected} to the distributed system.
*/
public ObjectName manageDistributedSystem()
throws MalformedObjectNameException;
/**
* Disconnects this agent from the distributed system and
* unregisters the management beans that provided information about
* it. However, this agent's adapters are not stopped and it is
* possible to reconfigure this Agent
to connect to
* another distributed system.
*/
public void disconnectFromSystem();
/**
* Saves the configuration for this Agent
to the file
* specified by @link AgentConfig#getPropertyFile.
*/
public void saveProperties();
/**
* Returns the LogWriter
used for logging information.
*/
public LogWriter getLogWriter();
}