http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6bb27bf1/geode-core/src/main/java/org/apache/geode/internal/admin/api/impl/SystemMemberRegionImpl.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/impl/SystemMemberRegionImpl.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/impl/SystemMemberRegionImpl.java new file mode 100644 index 0000000..87a06b8 --- /dev/null +++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/impl/SystemMemberRegionImpl.java @@ -0,0 +1,372 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You 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. + */ +package org.apache.geode.internal.admin.api.impl; + +import org.apache.geode.cache.*; +// import org.apache.geode.internal.Assert; +// import org.apache.geode.internal.admin.*; +import org.apache.geode.internal.admin.api.AdminException; +import org.apache.geode.internal.admin.api.SystemMemberRegion; +import org.apache.geode.internal.admin.remote.*; + +import java.io.File; +import java.util.*; + +/** + * View of a region in a GemFire system member's cache. + * + * @since GemFire 3.5 + */ +public class SystemMemberRegionImpl implements SystemMemberRegion { + + private AdminRegion r; + private RegionAttributes ra; + private CacheStatistics rs; + private Set subregionNames; + private Set subregionFullPaths; + private int entryCount; + private int subregionCount; + + /** The cache to which this region belongs */ + private final SystemMemberCacheImpl cache; + + // constructors + public SystemMemberRegionImpl(SystemMemberCacheImpl cache, Region r) { + this.cache = cache; + this.r = (AdminRegion) r; + } + + private void refreshFields() { + this.ra = this.r.getAttributes(); + if (getStatisticsEnabled() && !this.ra.getDataPolicy().withPartitioning()) { + this.rs = this.r.getStatistics(); + } else { + this.rs = null; + } + { // set subregionNames + Set s = this.r.subregions(false); + Set names = new TreeSet(); + Set paths = new TreeSet(); + Iterator it = s.iterator(); + while (it.hasNext()) { + Region r = (Region) it.next(); + String name = r.getName(); + names.add(name); + paths.add(this.getFullPath() + Region.SEPARATOR_CHAR + name); + } + this.subregionNames = names; + this.subregionFullPaths = paths; + } + try { + int[] sizes = this.r.sizes(); + this.entryCount = sizes[0]; + this.subregionCount = sizes[1]; + } catch (CacheException ignore) { + this.entryCount = 0; + this.subregionCount = 0; + } + } + + // attributes + public String getName() { + return this.r.getName(); + } + + public String getFullPath() { + return this.r.getFullPath(); + } + + public java.util.Set getSubregionNames() { + return this.subregionNames; + } + + public java.util.Set getSubregionFullPaths() { + return this.subregionFullPaths; + } + + public String getUserAttribute() { + return (String) r.getUserAttribute(); + } + + public String getCacheLoader() { + Object o = this.ra.getCacheLoader(); + if (o == null) { + return ""; + } else { + return o.toString(); + } + } + + public String getCacheWriter() { + Object o = this.ra.getCacheWriter(); + if (o == null) { + return ""; + } else { + return o.toString(); + } + } + + public String getKeyConstraint() { + Class constraint = this.ra.getKeyConstraint(); + if (constraint == null) { + return ""; + } else { + return constraint.getName(); + } + } + + public String getValueConstraint() { + Class constraint = this.ra.getValueConstraint(); + if (constraint == null) { + return ""; + } else { + return constraint.getName(); + } + } + + public boolean getEarlyAck() { + return this.ra.getEarlyAck(); + } + + public int getRegionTimeToLiveTimeLimit() { + return this.ra.getRegionTimeToLive().getTimeout(); + } + + public ExpirationAction getRegionTimeToLiveAction() { + return this.ra.getRegionTimeToLive().getAction(); + } + + public int getEntryTimeToLiveTimeLimit() { + return this.ra.getEntryTimeToLive().getTimeout(); + } + + public ExpirationAction getEntryTimeToLiveAction() { + return this.ra.getEntryTimeToLive().getAction(); + } + + public String getCustomEntryTimeToLive() { + Object o = this.ra.getCustomEntryTimeToLive(); + if (o == null) { + return ""; + } else { + return o.toString(); + } + } + + public int getRegionIdleTimeoutTimeLimit() { + return this.ra.getRegionIdleTimeout().getTimeout(); + } + + public ExpirationAction getRegionIdleTimeoutAction() { + return this.ra.getRegionIdleTimeout().getAction(); + } + + public int getEntryIdleTimeoutTimeLimit() { + return this.ra.getEntryIdleTimeout().getTimeout(); + } + + public ExpirationAction getEntryIdleTimeoutAction() { + return this.ra.getEntryIdleTimeout().getAction(); + } + + public String getCustomEntryIdleTimeout() { + Object o = this.ra.getCustomEntryIdleTimeout(); + if (o == null) { + return ""; + } else { + return o.toString(); + } + } + + public MirrorType getMirrorType() { + return this.ra.getMirrorType(); + } + + public DataPolicy getDataPolicy() { + return this.ra.getDataPolicy(); + } + + public Scope getScope() { + return this.ra.getScope(); + } + + public EvictionAttributes getEvictionAttributes() { + return this.ra.getEvictionAttributes(); + } + + /** + * This method will return an empty string if there are no CacheListeners defined on the region. + * If there are more than 1 CacheListeners defined, this method will return the description of the + * 1st CacheListener in the list returned by the getCacheListeners method. If there is only one + * CacheListener defined this method will return it's description + * + * @return String the region's <code>CacheListener</code> description + * @deprecated as of 6.0, use {@link #getCacheListeners} instead + */ + @Deprecated + public String getCacheListener() { + String[] o = this.getCacheListeners(); + if (o.length == 0) { + return ""; + } else { + return o[0].toString(); + } + } + + /** + * This method will return an empty array if there are no CacheListeners defined on the region. If + * there are one or more than 1 CacheListeners defined, this method will return an array which has + * the description of all the CacheListeners + * + * @return String[] the region's <code>CacheListeners</code> descriptions as a String array + * @since GemFire 6.0 + */ + public String[] getCacheListeners() { + Object[] o = this.ra.getCacheListeners(); + String[] ret = null; + if (o == null || o.length == 0) { + ret = new String[0]; + } else { + ret = new String[o.length]; + for (int i = 0; i < o.length; i++) { + ret[i] = o[i].toString(); + } + } + return ret; + } + + public int getInitialCapacity() { + return this.ra.getInitialCapacity(); + } + + public float getLoadFactor() { + return this.ra.getLoadFactor(); + } + + public int getConcurrencyLevel() { + return this.ra.getConcurrencyLevel(); + } + + public boolean getConcurrencyChecksEnabled() { + return this.ra.getConcurrencyChecksEnabled(); + } + + public boolean getStatisticsEnabled() { + return this.ra.getStatisticsEnabled(); + } + + public boolean getPersistBackup() { + return this.ra.getPersistBackup(); + } + + public DiskWriteAttributes getDiskWriteAttributes() { + return this.ra.getDiskWriteAttributes(); + } + + public File[] getDiskDirs() { + return this.ra.getDiskDirs(); + } + + public int getEntryCount() { + return this.entryCount; + } + + public int getSubregionCount() { + return this.subregionCount; + } + + public long getLastModifiedTime() { + if (this.rs == null) { + return 0; + } else { + return this.rs.getLastModifiedTime(); + } + } + + public long getLastAccessedTime() { + if (this.rs == null) { + return 0; + } else { + return this.rs.getLastAccessedTime(); + } + } + + public long getHitCount() { + if (this.rs == null) { + return 0; + } else { + return this.rs.getHitCount(); + } + } + + public long getMissCount() { + if (this.rs == null) { + return 0; + } else { + return this.rs.getMissCount(); + } + } + + public float getHitRatio() { + if (this.rs == null) { + return 0; + } else { + return this.rs.getHitRatio(); + } + } + + // operations + public void refresh() { + refreshFields(); + } + + /** + * Returns a string representation of the object. + * + * @return a string representation of the object + */ + @Override + public String toString() { + return getName(); + } + + public SystemMemberRegion createSubregion(String name, RegionAttributes attrs) + throws AdminException { + + Region r = this.cache.getVM().createSubregion(this.cache.getCacheInfo(), this.getFullPath(), + name, attrs); + if (r == null) { + return null; + + } else { + return this.cache.createSystemMemberRegion(r); + } + + } + + public MembershipAttributes getMembershipAttributes() { + return this.ra.getMembershipAttributes(); + } + + public SubscriptionAttributes getSubscriptionAttributes() { + return this.ra.getSubscriptionAttributes(); + } + + public PartitionAttributes getPartitionAttributes() { + return this.ra.getPartitionAttributes(); + } + +} +
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6bb27bf1/geode-core/src/main/java/org/apache/geode/internal/admin/api/impl/SystemMembershipEventImpl.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/impl/SystemMembershipEventImpl.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/impl/SystemMembershipEventImpl.java new file mode 100644 index 0000000..9703498 --- /dev/null +++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/impl/SystemMembershipEventImpl.java @@ -0,0 +1,68 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You 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. + */ +package org.apache.geode.internal.admin.api.impl; + +import org.apache.geode.distributed.DistributedMember; +import org.apache.geode.internal.admin.api.SystemMembershipEvent; +import org.apache.geode.internal.admin.api.SystemMembershipListener; + +/** + * An event delivered to a {@link SystemMembershipListener} when a member has joined or left the + * distributed system. + * + * @since GemFire 5.0 + */ +public class SystemMembershipEventImpl implements SystemMembershipEvent { + + /** The id of the member that generated this event */ + private DistributedMember id; + + /////////////////////// Constructors /////////////////////// + + /** + * Creates a new <code>SystemMembershipEvent</code> for the member with the given id. + */ + protected SystemMembershipEventImpl(DistributedMember id) { + this.id = id; + } + + ///////////////////// Instance Methods ///////////////////// + + public String getMemberId() { + return this.id.toString(); + } + + public DistributedMember getDistributedMember() { + return this.id; + } + + // /** + // * Returns the user specified callback object associated with this + // * membership event. Note that the callback argument is always + // * <code>null</code> for the event delivered to the {@link + // * SystemMembershipListener#memberCrashed} method. + // * + // * @since GemFire 4.0 + // */ + // public Object getCallbackArgument() { + // throw new UnsupportedOperationException("Not implemented yet"); + // } + + @Override + public String toString() { + return "Member " + this.getMemberId(); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6bb27bf1/geode-core/src/main/java/org/apache/geode/internal/admin/api/impl/package.html ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/impl/package.html b/geode-core/src/main/java/org/apache/geode/internal/admin/api/impl/package.html new file mode 100644 index 0000000..cfa4e41 --- /dev/null +++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/impl/package.html @@ -0,0 +1,53 @@ +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You 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. +--> +<HTML> +<BODY> + +<P>Contains the implementation of the external admin APIs from +<a href="{@docRoot}/org/apache/geode/internal/admin/api/package-summary.html#package_description">org.apache.geode.internal.admin.api</a>.</P> + +<H2>Monitoring the "health" of GemFire</H2> + +<P>The health monitoring implementation comes in two pieces. On the +client (administrator) side there is a {@link +GemFireHealthImpl} object that is +responsible for configuring a {@link +org.apache.geode.distributed.internal.HealthMonitorImpl} that runs +in the member VMs. The communication between the administration +process and the member process is accomplised via a {@link +org.apache.geode.internal.admin.GemFireVM GemFireVM} from the +"internal admin" API. The <code>HealthMonitorImpl</code> is a thread +that periodically consults a {@link +GemFireHealthEvaluator} that uses +a {@link GemFireHealthConfigImpl} +to determine the health of a GemFire component. Most of the health +criteria are based on {@linkplain org.apache.geode.Statistics +statistics} that are maintained by GemFire. When the +<code>HealthMonitorImpl</code> determines that the health of a GemFire +component has changed, it alerts the administrator process via a +{@link org.apache.geode.internal.admin.HealthListener}.</P> + + +<P>The below diagram explains how the classes that monitor the health +of GemFire are implemented.</P> + +<CENTER> +<IMG src="{@docRoot}/javadoc-images/health-classes.gif" HEIGHT="803" /> +</CENTER> + +</BODY> +</HTML> http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6bb27bf1/geode-core/src/main/java/org/apache/geode/internal/admin/api/jmx/Agent.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/jmx/Agent.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/jmx/Agent.java new file mode 100644 index 0000000..0179a38 --- /dev/null +++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/jmx/Agent.java @@ -0,0 +1,145 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You 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. + */ +package org.apache.geode.internal.admin.api.jmx; + +import org.apache.geode.LogWriter; +import org.apache.geode.internal.admin.api.AdminException; +import org.apache.geode.internal.admin.api.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 <code>Agent</code> is created, it + * registers an MBean that represents {@link #getObjectName itself}. Click + * <A href="doc-files/mbeans-descriptions.html">here</A> for a description of the attributes, + * operations, and notifications of this and other GemFire JMX MBeans. + * + * <P> + * + * 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}. + * + * <P> + * + * In most distributed caching architectures, JMX administration agents are run in their own + * processes. A stand-alone JMX agent is managed using the <code>agent</code> command line utility: + * + * <PRE> + * $ agent start + * </PRE> + * + * 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 + * + * @since GemFire 4.0 + * @deprecated as of 7.0 use the <code><a href= + * "{@docRoot}/org/apache/geode/management/package-summary.html">management</a></code> + * 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 <code>MBeanServer</code> with which GemFire MBeans are registered or + * <code>null</code> if this <code>Agent</code> 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 <code>ObjectName</code> of the JMX management bean that represents this agent or + * <code>null</code> if this <code>Agent</code> has not been started. + */ + public ObjectName getObjectName(); + + /** + * Returns whether or not this JMX <code>Agent</code> is currently providing information about a + * distributed system. + */ + public boolean isConnected(); + + /** + * Connects to the distributed system described by this <code>Agent</code>'s configuration. + * + * @return The object name of the system that the <code>Agent</code> is now connected to. + */ + public ObjectName connectToSystem() throws AdminException, MalformedObjectNameException; + + /** + * Returns the <code>AdminDistributedSystem</code> that underlies this JMX <code>Agent</code> or + * <code>null</code> 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 <code>Agent</code> or <code>null</code> if this <code>Agent</code> 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 <code>Agent</code> to connect to another distributed system. + */ + public void disconnectFromSystem(); + + /** + * Saves the configuration for this <code>Agent</code> to the file specified by @link + * AgentConfig#getPropertyFile. + */ + public void saveProperties(); + + /** + * Returns the <code>LogWriter</code> used for logging information. + */ + public LogWriter getLogWriter(); + +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6bb27bf1/geode-core/src/main/java/org/apache/geode/internal/admin/api/jmx/AgentConfig.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/jmx/AgentConfig.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/jmx/AgentConfig.java new file mode 100644 index 0000000..3a130ae --- /dev/null +++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/jmx/AgentConfig.java @@ -0,0 +1,844 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You 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. + */ +package org.apache.geode.internal.admin.api.jmx; + +import org.apache.geode.internal.admin.api.DistributedSystemConfig; +import org.apache.geode.distributed.internal.DistributionConfig; +// import InetAddressUtil; + +/** + * A configuration object for a JMX administration {@linkplain Agent agent} that is hosted by a + * GemFire application VM. A file named {@link #DEFAULT_PROPERTY_FILE "agent.properties"} can be + * used to override the default values of <code>AgentConfig</code> attributes. The + * "gfAgentPropertyFile" {@linkplain System#getProperty(java.lang.String) system property} can be + * used to specify an agent properties file other than "agent.properties". System properties + * prefixed with {@linkplain #SYSTEM_PROPERTY_PREFIX "gemfire.agent."} can be used to override the + * values in the properties file. For instance "-Dgemfire.agent.http-port=8081" can be used to + * override the default port for the HTTP adapter. Configuration related to the distributed system + * that the JMX agent administers is inherited from and described in <code>AgentConfig</code>'s + * superinterface, {@link DistributedSystemConfig}. + * + * <P> + * + * An <code>AgentConfig</code> can be modified using a number of mutator methods until it is used to + * create an <code>Agent</code>. After that, attempts to modify most attributes in the + * <code>AgentConfig</code> will result in an {@link IllegalStateException} being thrown. If you + * wish to use the same <code>AgentConfig</code> to configure multiple <code>Agent</code>s, a copy + * of the <code>AgentConfig</code> object can be made by invoking its {@link #clone} method. + * + * <P> + * + * <B>JMX Administation Agent Configuration Properties</B> + * + * <dl> + * <a name="auto-connect"> + * <dt>{@linkplain #AUTO_CONNECT_NAME auto-connect}</dt></a> + * <dd><U>Description</U>: whether or not a JMX agent will automatically connect to the distributed + * system it is configured to administer.</dd> + * <dd><U>{@linkplain #DEFAULT_AUTO_CONNECT Default}</U>: false</dd> + * </dl> + * + * <B>JMX Agent SSL Configuration Properties</B> + * + * <P> + * + * These parameters configure sockets that are created by the GemFire JMX Agent regardless of which + * adapters are enabled. These setting apply to all adapters. For example, if clients connect to the + * RMI adapter using SSL, then clients must also connect to the HTTP adapter using SSL (HTTPS). Note + * that these configuration attributes do <b>not</b> effect how the agent connects to the + * distributed system it administers, only how JMX clients connect to the agent. + * + * <dl> + * <a name="agent-ssl-enabled"> + * <dt>{@linkplain #AGENT_SSL_ENABLED_NAME agent-ssl-enabled}</dt></a> + * <dd><U>Description</U>: whether or not connections to the JMX agent require SSL</dd> + * <dd><U>{@linkplain #DEFAULT_AGENT_SSL_ENABLED Default}</U>: false</dd> + * </dl> + * + * <dl> + * <a name="agent-ssl-protocols"> + * <dt>{@linkplain #AGENT_SSL_PROTOCOLS_NAME agent-ssl-protocols}</dt></a> + * <dd><U>Description</U>: the SSL protocols to be used when connecting to the JMX agent</dd> + * <dd><U>{@linkplain #DEFAULT_AGENT_SSL_PROTOCOLS Default}</U>: any</dd> + * </dl> + * + * <dl> + * <a name="agent-ssl-ciphers"> + * <dt>{@linkplain #AGENT_SSL_CIPHERS_NAME agent-ssl-ciphers}</dt></a> + * <dd><U>Description</U>: the SSL ciphers to be used when connecting to the JMX agent</dd> + * <dd><U>{@linkplain #DEFAULT_AGENT_SSL_CIPHERS Default}</U>: any</dd> + * </dl> + * + * <dl> + * <a name="agent-ssl-require-authentication"> + * <dt>{@linkplain #AGENT_SSL_REQUIRE_AUTHENTICATION_NAME agent-ssl-require-authentication}</dt></a> + * <dd><U>Description</U>: whether or not SSL connections to the RMI adapter require authentication + * </dd> + * <dd><U>{@linkplain #DEFAULT_AGENT_SSL_REQUIRE_AUTHENTICATION Default}</U>: true</dd> + * </dl> + * + * <dl> + * <a name="http-ssl-require-authentication"> + * <dt>{@linkplain #HTTP_SSL_REQUIRE_AUTHENTICATION_NAME http-ssl-require-authentication}</dt></a> + * <dd><U>Description</U>: whether or not SSL connections to the HTTP adapter require authentication + * </dd> + * <dd><U>{@linkplain #DEFAULT_HTTP_SSL_REQUIRE_AUTHENTICATION Default}</U>: false</dd> + * </dl> + * + * <B>HTTP Adapter Configuration</B> + * + * <dl> + * <a name="http-enabled"> + * <dt>{@linkplain #HTTP_ENABLED_NAME http-enabled}</dt></a> + * <dd><U>Description</U>: whether or not the HTTP adapter is enabled in the JMX agent.</dd> + * <dd><U>{@linkplain #DEFAULT_HTTP_ENABLED Default}</U>: true</dd> + * </dl> + * + * <dl> + * <a name="http-port"> + * <dt>{@linkplain #HTTP_PORT_NAME http-port}</dt></a> + * <dd><U>Description</U>: the port on which the HTTP adapter should listen for client connections. + * </dd> + * <dd><U>{@linkplain #DEFAULT_HTTP_PORT Default}</U>: 8080</dd> + * </dl> + * + * <dl> + * <a name="http-bind-address"> + * <dt>{@linkplain #HTTP_BIND_ADDRESS_NAME http-bind-address}</dt></a> + * <dd><U>Description</U>: the machine name or IP address to which the HTTP listening socket should + * be bound. If this value is "localhost", then the socket will be bound to the loopback address + * (127.0.0.1) and the adapter will only be accessible via the URL + * <code>http://localhost:8080</code>.</dd> + * <dd><U>{@linkplain #DEFAULT_HTTP_BIND_ADDRESS Default}</U>: "" (all network addresses)</dd> + * </dl> + * + * <dl> + * <a name="http-authentication-enabled"> + * <dt>{@linkplain #HTTP_AUTHENTICATION_ENABLED_NAME http-authentication-enabled}</dt></a> + * <dd><U>Description</U>: Whether or not connections to the HTTP adapter should be authenticated + * with a user name and password.</dd> + * <dd><U>{@linkplain #DEFAULT_HTTP_AUTHENTICATION_ENABLED Default}</U>: false</dd> + * </dl> + * + * <dl> + * <a name="http-authentication-user"> + * <dt>{@linkplain #HTTP_AUTHENTICATION_USER_NAME http-authentication-user}</dt></a> + * <dd><U>Description</U>: the user name for authenticating secure communication.</dd> + * <dd><U>{@linkplain #DEFAULT_HTTP_AUTHENTICATION_USER Default}</U>: admin</dd> + * </dl> + * + * <dl> + * <a name="http-authentication-password"> + * <dt>{@linkplain #HTTP_AUTHENTICATION_PASSWORD_NAME http-authentication-password}</dt></a> + * <dd><U>Description</U>: the password for authenticating secure communication.</dd> + * <dd><U>{@linkplain #DEFAULT_HTTP_AUTHENTICATION_PASSWORD Default}</U>: password</dd> + * </dl> + * + * <B>RMI Adapter Configuration Properties</B> + * + * <dl> + * <a name="rmi-enabled"> + * <dt>{@linkplain #RMI_ENABLED_NAME rmi-enabled}</dt></a> + * <dd><U>Description</U>: whether or not the RMI JMX adapter is enabled</dd> + * <dd><U>{@linkplain #DEFAULT_RMI_ENABLED Default}</U>: true</dd> + * </dl> + * + * <dl> + * <a name="rmi-registry-enabled"> + * <dt>{@linkplain #RMI_REGISTRY_ENABLED_NAME rmi-registry-enabled}</dt></a> + * <dd><U>Description</U>: whether or not the JMX agent should start an RMI registry. Alternatively, + * a registry outside of the JMX agent VM can be used.</dd> + * <dd><U>{@linkplain #DEFAULT_RMI_REGISTRY_ENABLED Default}</U>: true</dd> + * </dl> + * + * <dl> + * <a name="rmi-port"> + * <dt>{@linkplain #RMI_PORT_NAME rmi-port}</dt></a> + * <dd><U>Description</U>: the port of the RMI registry in which the JMX Agent should bind remote + * objects.</dd> + * <dd><U>{@linkplain #DEFAULT_RMI_PORT Default}</U>: 1099</dd> + * </dl> + * + * <dl> + * <a name="rmi-server-port"> + * <dt>{@linkplain #RMI_PORT_NAME rmi-server-port}</dt></a> + * <dd><U>Description</U>: the port to be used by the RMI Server started by JMX Agent.</dd> + * <dd><U>{@linkplain #DEFAULT_RMI_SERVER_PORT Default}</U>: 0</dd> + * </dl> + * + * <dl> + * <a name="rmi-bind-address"> + * <dt>{@linkplain #RMI_BIND_ADDRESS_NAME rmi-bind-address}</dt></a> + * <dd><U>Description</U>: the bind address on which the RMI registry binds its sockets.</dd> + * <dd><U>{@linkplain #DEFAULT_RMI_BIND_ADDRESS Default}</U>: "" (all network addresses)</dd> + * </dl> + * + * <B>AdventNet SNMP Adapter Configuration Properties</B> + * + * <dl> + * <a name="snmp-enabled"> + * <dt>{@linkplain #SNMP_ENABLED_NAME snmp-enabled}</dt></a> + * <dd><U>Description</U>: whether or not the SNMP JMX adapter is enabled</dd> + * <dd><U>{@linkplain #DEFAULT_SNMP_ENABLED Default}</U>: false</dd> + * </dl> + * + * <dl> + * <a name="snmp-bind-address"> + * <dt>{@linkplain #SNMP_BIND_ADDRESS_NAME snmp-bind-address}</dt></a> + * <dd><U>Description</U>: the host name to which sockets used by the SNMP adapter should be bound. + * </dd> + * <dd><U>{@linkplain #DEFAULT_SNMP_BIND_ADDRESS Default}</U>: the name of the local machine (not + * <code>localhost</code>)</dd> + * </dl> + * + * <dl> + * <a name="snmp-directory"> + * <dt>{@linkplain #SNMP_DIRECTORY_NAME snmp-directory}</dt></a> + * <dd><U>Description</U>: the deployment directory for AdventNet SNMP Adaptor</dd> + * <dd><U>{@linkplain #DEFAULT_SNMP_DIRECTORY Default}</U>: ""</dd> + * </dl> + * + * <B>JMX Agent Email Notification Properties (for statistics alerts)</B> + * + * <dl> + * <a name="email-notification-enabled"> + * <dt>{@linkplain #EMAIL_NOTIFICATIONS_ENABLED_NAME email-notification-enabled}</dt></a> + * <dd><U>Description</U>: Whether or not email notifications are enabled for statistics alerts. + * </dd> + * <dd><U>{@linkplain #DEFAULT_EMAIL_NOTIFICATIONS_ENABLED Default}</U>: false</dd> + * </dl> + * + * <dl> + * <a name="email-notification-from"> + * <dt>{@linkplain #EMAIL_NOTIFICATIONS_FROM_NAME email-notification-from}</dt></a> + * <dd><U>Description</U>: Email address to be used to send email notifications.</dd> + * <dd><U>{@linkplain #DEFAULT_EMAIL_FROM Default}</U>: ""</dd> + * </dl> + * + * <dl> + * <a name="email-notification-host"> + * <dt>{@linkplain #EMAIL_NOTIFICATIONS_HOST_NAME email-notification-host}</dt></a> + * <dd><U>Description</U>: The host name of the mail server to be used for email communication.</dd> + * <dd><U>{@linkplain #DEFAULT_EMAIL_HOST Default}</U>: ""</dd> + * </dl> + * + * <dl> + * <a name="email-notification-to"> + * <dt>{@linkplain #EMAIL_NOTIFICATIONS_TO_LIST_NAME email-notification-to}</dt></a> + * <dd><U>Description</U>: Email address where the email notifications should be sent.</dd> + * <dd><U>{@linkplain #DEFAULT_EMAIL_TO_LIST Default}</U>: ""</dd> + * </dl> + * + * <dl> + * <a name="state-save-file"> + * <dt>{@linkplain #STATE_SAVE_FILE_NAME state-save-file}</dt></a> + * <dd><U>Description</U>: The name of the file to be used for saving agent state. The file is + * stored in the same directory in which the agent.properties file is located</dd> + * <dd><U>{@linkplain #DEFAULT_STATE_SAVE_FILE Default}</U>: ""</dd> + * </dl> + * + * + * @since GemFire 4.0 + * @deprecated as of 7.0 use the <code><a href= + * "{@docRoot}/org/apache/geode/management/package-summary.html">management</a></code> + * package instead + */ +public interface AgentConfig extends DistributedSystemConfig { + + /** The prefix for JMX Agent configuration system properties */ + public static final String SYSTEM_PROPERTY_PREFIX = DistributionConfig.GEMFIRE_PREFIX + "agent."; + + /** The default "propertyFile" value */ + public static final String DEFAULT_PROPERTY_FILE = "agent.properties"; + + /** The default name for file that has "agent state saved serialized" */ + public static final String DEFAULT_STATE_SAVE_FILE = "agent.ser"; + + /** The name of the "auto-connect" property */ + public static final String AUTO_CONNECT_NAME = "auto-connect"; + + /** The default value of the "auto-connect" property */ + public static final boolean DEFAULT_AUTO_CONNECT = true; + + // ------------------------------------------------------------------------- + // HttpAdaptor properties... + // ------------------------------------------------------------------------- + + /** The name of the "httpEnabled" property */ + public static final String HTTP_ENABLED_NAME = "http-enabled"; + + /** The default value of the "httpEnabled" property */ + public static final boolean DEFAULT_HTTP_ENABLED = true; + + /** The name of the "httpBindAddress" property */ + public static final String HTTP_BIND_ADDRESS_NAME = "http-bind-address"; + + /** The default value of the "httpBindAddress" property */ + public static final String DEFAULT_HTTP_BIND_ADDRESS = ""; + + /** The name of the "httpPort" property */ + public static final String HTTP_PORT_NAME = "http-port"; + + /** The default value of the "httpPort" property (8080) */ + public static final int DEFAULT_HTTP_PORT = 8080; + + /** The minimum httpPort (0) */ + public static final int MIN_HTTP_PORT = 0; + + /** The maximum httpPort (65535) */ + public static final int MAX_HTTP_PORT = 65535; + + /** The name of the "state-save-file-name" property */ + public static final String STATE_SAVE_FILE_NAME = "state-save-file"; + + /** The name of the "http-authentication-enabled" property */ + public static final String HTTP_AUTHENTICATION_ENABLED_NAME = "http-authentication-enabled"; + + /** + * The default value of the "http-authentication-enabled" property + */ + public static final boolean DEFAULT_HTTP_AUTHENTICATION_ENABLED = false; + + /** The name of the "http-authentication-user" property */ + public static final String HTTP_AUTHENTICATION_USER_NAME = "http-authentication-user"; + + /** The default value of the "http-authentication-user" property */ + public static final String DEFAULT_HTTP_AUTHENTICATION_USER = "admin"; + + /** The name of the "http-authentication-password" property */ + public static final String HTTP_AUTHENTICATION_PASSWORD_NAME = "http-authentication-password"; + + /** + * The default value of the "http-authentication-password" property + */ + public static final String DEFAULT_HTTP_AUTHENTICATION_PASSWORD = "password"; + + /** The name of the "email-notification-enabled" property */ + public static final String EMAIL_NOTIFICATIONS_ENABLED_NAME = "email-notification-enabled"; + + /** + * The default value of the "email-notification-enabled" property + */ + public static final boolean DEFAULT_EMAIL_NOTIFICATIONS_ENABLED = false; + + /** The name of the "email-notification-from" property */ + public static final String EMAIL_NOTIFICATIONS_FROM_NAME = "email-notification-from"; + + /** + * The default value of the "email-notification-from" property + */ + public static final String DEFAULT_EMAIL_FROM = ""; + + /** The name of the "email-notification-host" property */ + public static final String EMAIL_NOTIFICATIONS_HOST_NAME = "email-notification-host"; + + /** + * The default value of the "email-notification-host" property + */ + public static final String DEFAULT_EMAIL_HOST = ""; + + /** The name of the "email-notification-to" property */ + public static final String EMAIL_NOTIFICATIONS_TO_LIST_NAME = "email-notification-to"; + + /** + * The default value of the "email-notification-to" property + */ + public static final String DEFAULT_EMAIL_TO_LIST = ""; + + // ------------------------------------------------------------------------- + // RMIConnectorServer properties... + // ------------------------------------------------------------------------- + + /** The name of the "rmiEnabled" property */ + public static final String RMI_ENABLED_NAME = "rmi-enabled"; + + /** The default value of the {@linkplain #RMI_ENABLED_NAME rmi-enabled} property */ + public static final boolean DEFAULT_RMI_ENABLED = true; + + /** The name of the "rmi-registry-enabled" property */ + public static final String RMI_REGISTRY_ENABLED_NAME = "rmi-registry-enabled"; + + /** + * The default value of the {@linkplain #RMI_REGISTRY_ENABLED_NAME rmi-registry-enabled} property + */ + public static final boolean DEFAULT_RMI_REGISTRY_ENABLED = true; + + /** The name of the "rmiBindAddress" property */ + public static final String RMI_BIND_ADDRESS_NAME = "rmi-bind-address"; + + /** The default value of the {@linkplain #RMI_BIND_ADDRESS_NAME rmi-bind-address} property */ + public static final String DEFAULT_RMI_BIND_ADDRESS = ""; + + /** The name of the "rmiPort" property */ + public static final String RMI_PORT_NAME = "rmi-port"; + + /** The default value of the {@linkplain #RMI_PORT_NAME rmi-port} property (1099) */ + public static final int DEFAULT_RMI_PORT = 1099; + + /** + * The name of the "rmi-server-port" property + * + * @since GemFire 6.5 + */ + public static final String RMI_SERVER_PORT_NAME = "rmi-server-port"; + + /** + * The default value of the {@linkplain #RMI_SERVER_PORT_NAME rmi-server-port} property (0) + * + * @since GemFire 6.5 + */ + public static final int DEFAULT_RMI_SERVER_PORT = 0; + + /** + * The minimum value for {@linkplain #RMI_PORT_NAME rmi-port} or {@linkplain #RMI_SERVER_PORT_NAME + * rmi-server-port} (0) + */ + public static final int MIN_RMI_PORT = 0; + + /** + * The maximum value for {@linkplain #RMI_PORT_NAME rmi-port} or {@linkplain #RMI_SERVER_PORT_NAME + * rmi-server-port} (65535) + */ + public static final int MAX_RMI_PORT = 65535; + + // ------------------------------------------------------------------------- + // AdventNetSNMPAdaptor properties... + // ------------------------------------------------------------------------- + + /** The name of the "snmpEnabled" property */ + public static final String SNMP_ENABLED_NAME = "snmp-enabled"; + + /** The default value of the "snmpEnabled" property */ + public static final boolean DEFAULT_SNMP_ENABLED = false; + + /** The name of the "snmpBindAddress" property */ + public static final String SNMP_BIND_ADDRESS_NAME = "snmp-bind-address"; + + /** The default value of the "snmpBindAddress" property */ + public static final String DEFAULT_SNMP_BIND_ADDRESS = ""; + + /** The name of the "snmpDirectory" property */ + public static final String SNMP_DIRECTORY_NAME = "snmp-directory"; + + /** The default value of the "snmpDirectory" property */ + public static final String DEFAULT_SNMP_DIRECTORY = ""; + + // ------------------------------------------------------------------------- + // JMX SSL properties... + // ------------------------------------------------------------------------- + + /** The name of the "agent-ssl-enabled" property */ + public static final String AGENT_SSL_ENABLED_NAME = "agent-ssl-enabled"; + + /** The default value of the "agent-ssl-enabled" property */ + public static final boolean DEFAULT_AGENT_SSL_ENABLED = false; + + /** The name of the "agent-ssl-protocols" property */ + public static final String AGENT_SSL_PROTOCOLS_NAME = "agent-ssl-protocols"; + + /** The default value of the "agent-ssl-protocols" property */ + public static final String DEFAULT_AGENT_SSL_PROTOCOLS = "any"; + + /** The name of the "agent-ssl-ciphers" property */ + public static final String AGENT_SSL_CIPHERS_NAME = "agent-ssl-ciphers"; + + /** The default value of the "agent-ssl-ciphers" property */ + public static final String DEFAULT_AGENT_SSL_CIPHERS = "any"; + + /** The name of the "agent-ssl-require-authentication" property */ + public static final String AGENT_SSL_REQUIRE_AUTHENTICATION_NAME = + "agent-ssl-require-authentication"; + + /** + * The default value of the "agent-ssl-require-authentication" property + */ + public static final boolean DEFAULT_AGENT_SSL_REQUIRE_AUTHENTICATION = true; + + /** The name of the "http-ssl-require-authentication" property */ + public static final String HTTP_SSL_REQUIRE_AUTHENTICATION_NAME = + "http-ssl-require-authentication"; + + /** + * The default value of the "http-ssl-require-authentication" property + */ + public static final boolean DEFAULT_HTTP_SSL_REQUIRE_AUTHENTICATION = false; + + ////////////////////// Instance Methods ////////////////////// + + /** + * Returns whether or not the JMX agent will automatically connect to the distributed system it + * administers. + * + * See <a href="#auto-connect">description</a> above. + */ + public boolean getAutoConnect(); + + /** + * Sets whether or not the JMX agent will automatically connect to the distributed system it + * administers. + * + * See <a href="#auto-connect">description</a> above. + */ + public void setAutoConnect(boolean autoConnect); + + /** + * Returns whether or not the HTTP adapter is enabled. + * + * See <a href="#http-enabled">description</a> above. + */ + public boolean isHttpEnabled(); + + /** + * Sets whether or not the HTTP adapter is enabled. + * + * See <a href="#http-enabled">description</a> above. + */ + public void setHttpEnabled(boolean httpEnabled); + + /** + * Returns the port of the HTTP adapter. + * + * See <a href="#http-port">description</a> above. + */ + public int getHttpPort(); + + /** + * Sets the port of the HTTP adapter. + * + * See <a href="#http-port">description</a> above. + */ + public void setHttpPort(int port); + + /** + * Returns the bind address to which the HTTP adapter's listening socket is bound. + * + * See <a href="#http-bind-address">description</a> above. + */ + public String getHttpBindAddress(); + + /** + * Sets the bind address to which the HTTP adapter's listening socket is bound. + * + * See <a href="#http-bind-address">description</a> above. + */ + public void setHttpBindAddress(String address); + + /** + * Returns whether or not the HTTP adapter authenticates connections. + * + * See <a href="#http-authentication-enabled">description</a> above. + */ + public boolean isHttpAuthEnabled(); + + /** + * Sets whether or not the HTTP adapter authenticates connections. + * + * See <a href="#http-authentication-enabled">description</a> above. + */ + public void setHttpAuthEnabled(boolean enabled); + + /** + * Returns the user name for HTTP adapter authentication. + * + * See <a href="#http-authentication-user">description</a> above. + */ + public String getHttpAuthUser(); + + /** + * Sets the user name for HTTP adapter authentication. + * + * See <a href="#http-authentication-user">description</a> above. + */ + public void setHttpAuthUser(String user); + + /** + * Returns the password for HTTP adapter authentication. + * + * See <a href="#http-authentication-password">description</a> above. + */ + public String getHttpAuthPassword(); + + /** + * Sets the password for HTTP adapter authentication. + * + * See <a href="#http-authentication-password">description</a> above. + */ + public void setHttpAuthPassword(String password); + + /** + * Returns whether or not the RMI adapter is enabled. + * + * See <a href="#rmi-enabled">description</a> above. + */ + public boolean isRmiEnabled(); + + /** + * Sets whether or not the RMI adapter is enabled. + * + * See <a href="#rmi-enabled">description</a> above. + */ + public void setRmiEnabled(boolean rmiEnabled); + + /** + * Returns whether or not the agent hosts an RMI registry. + * + * See <a href="#rmi-registry-enabled">description</a> above. + */ + public boolean isRmiRegistryEnabled(); + + /** + * Sets whether or not the agent hosts an RMI registry. + * + * See <a href="#rmi-registry-enabled">description</a> above. + */ + public void setRmiRegistryEnabled(boolean enabled); + + /** + * Returns the port of the RMI adapter. + * + * See <a href="#rmi-port">description</a> above. + */ + public int getRmiPort(); + + /** + * Sets the port of the RMI adapter. + * + * See <a href="#rmi-port">description</a> above. + */ + public void setRmiPort(int port); + + /** + * Returns the port of the RMI Connector Server. + * + * See <a href="#rmi-server-port">description</a> above. + * + * @return the value set for rmi-server-port + * @since GemFire 6.5 + */ + public int getRmiServerPort(); + + /** + * Sets the port of the RMI Connector Server. + * + * See <a href="#rmi-server-port">description</a> above. + * + * @param port rmi-server-port to set. + * @since GemFire 6.5 + */ + public void setRmiServerPort(int port); + + /** + * Returns the bind address to which the RMI adapter's listening sockets are bound. + * + * See <a href="#rmi-bind-address">description</a> above. + */ + public String getRmiBindAddress(); + + /** + * Sets the bind address to which the RMI adapter's listening sockets are bound. + * + * See <a href="#rmi-bind-address">description</a> above. + */ + public void setRmiBindAddress(String address); + + /** + * Returns whether or not the SNMP adapter is enabled. + * + * See <a href="#snmp-enabled">description</a> above. + */ + public boolean isSnmpEnabled(); + + /** + * Sets whether or not the SNMP adapter is enabled. + * + * See <a href="#snmp-enabled">description</a> above. + */ + public void setSnmpEnabled(boolean enabled); + + /** + * Returns the bind address used with the SNMP adapter. + * + * See <a href="#snmp-bind-address">description</a> above. + */ + public String getSnmpBindAddress(); + + /** + * Sets the bind address used with the SNMP adapter. + * + * See <a href="#snmp-bind-address">description</a> above. + */ + public void setSnmpBindAddress(String address); + + /** + * Returns the directory for the SNMP adapater. + * + * See <a href="#snmp-directory">description</a> above. + */ + public String getSnmpDirectory(); + + /** + * Sets the directory for the SNMP adapater. + * + * See <a href="#snmp-directory">description</a> above. + */ + public void setSnmpDirectory(String snmpDirectory); + + /** + * Returns whether or not SSL is required for the JMX agent. + * + * See <a href="#agent-ssl-enabled">description</a> above. + */ + public boolean isAgentSSLEnabled(); + + /** + * Sets whether or not SSL is required for the JMX agent. + * + * See <a href="#agent-ssl-enabled">description</a> above. + */ + public void setAgentSSLEnabled(boolean enabled); + + /** + * Returns the SSL protocols used when connecting to the JMX agent. + * + * See <a href="#agent-ssl-protocols">description</a> above. + */ + public String getAgentSSLProtocols(); + + /** + * Sets the SSL protocols used when connecting to the JMX agent. + * + * See <a href="#agent-ssl-protocols">description</a> above. + */ + public void setAgentSSLProtocols(String protocols); + + /** + * Returns the SSL ciphers used when connecting to the JMX agent. + * + * See <a href="#agent-ssl-ciphers">description</a> above. + */ + public String getAgentSSLCiphers(); + + /** + * Sets the SSL ciphers used when connecting to the JMX agent. + * + * See <a href="#agent-ssl-ciphers">description</a> above. + */ + public void setAgentSSLCiphers(String ciphers); + + /** + * Returns whether SSL authentication is used when connecting to the RMI connector. + * + * See <a href="#agent-ssl-require-authentication">description</a> above. + */ + public boolean isAgentSSLRequireAuth(); + + /** + * Sets whether SSL authentication is used when connecting to the RMI connector. + * + * See <a href="#agent-ssl-require-authentication">description</a> above. + */ + public void setAgentSSLRequireAuth(boolean require); + + /** + * Returns whether SSL authentication is used when connecting to the HTTP connector. + * + * See <a href="#http-ssl-require-authentication">description</a> above. + */ + public boolean isHttpSSLRequireAuth(); + + /** + * Sets whether SSL authentication is used when connecting to the HTTP connector. + * + * See <a href="#http-ssl-require-authentication">description</a> above. + */ + public void setHttpSSLRequireAuth(boolean require); + + /** + * Returns whether Emails for Notifications is enabled + * + * See <a href="#email-notification-enabled">description</a> above. + */ + public boolean isEmailNotificationEnabled(); + + /** + * Sets whether Emails for Notifications is enabled + * + * See <a href="#email-notification-enabled">description</a> above. + */ + public void setEmailNotificationEnabled(boolean enabled); + + /** + * Returns the EmailID from whom notification emails are sent. + * + * See <a href="#email-notification-from">description</a> above. + */ + public String getEmailNotificationFrom(); + + /** + * Sets the EmailID from whom notification emails are sent. + * + * See <a href="#email-notification-from">description</a> above. + */ + public void setEmailNotificationFrom(String emailID); + + /** + * Returns the Host Name using which notification emails are sent. + * + * See <a href="#email-notification-host">description</a> above. + */ + public String getEmailNotificationHost(); + + /** + * Sets the Host Name from whom notification emails are sent. + * + * See <a href="#email-notification-host">description</a> above. + */ + public void setEmailNotificationHost(String hostName); + + /** + * Returns the comma separated EmailID list to whom notification emails are sent. + * + * See <a href="#email-notification-to">description</a> above. + */ + public String getEmailNotificationToList(); + + /** + * Sets the EmailID from whom notification emails are sent as a comma separated list. + * + * See <a href="#email-notification-to">description</a> above. + */ + public void setEmailNotificationToList(String emailIDs); + + /** + * Returns the name of the file to be used for saving agent state + * + * See <a href="#state-save-file">description</a> above. + */ + public String getStateSaveFile(); + + /** + * Sets the name of the file to be used for saving agent state + * + * See <a href="#state-save-file">description</a> above. + */ + public void setStateSaveFile(String file); + + /** + * Returns an <code>AgentConfig</code> with the same configuration as this + * <code>AgentConfig</code>. + */ + public Object clone() throws CloneNotSupportedException; + +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6bb27bf1/geode-core/src/main/java/org/apache/geode/internal/admin/api/jmx/AgentFactory.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/internal/admin/api/jmx/AgentFactory.java b/geode-core/src/main/java/org/apache/geode/internal/admin/api/jmx/AgentFactory.java new file mode 100644 index 0000000..c82e0a0 --- /dev/null +++ b/geode-core/src/main/java/org/apache/geode/internal/admin/api/jmx/AgentFactory.java @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for additional information regarding + * copyright ownership. The ASF licenses this file to You 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. + */ +package org.apache.geode.internal.admin.api.jmx; + +import org.apache.geode.internal.admin.api.AdminException; +import org.apache.geode.internal.admin.api.jmx.impl.AgentConfigImpl; +import org.apache.geode.internal.admin.api.jmx.impl.AgentImpl; + +/** + * A factory class that creates JMX administration entities. + * + * @since GemFire 4.0 + * @deprecated as of 7.0 use the <code><a href= + * "{@docRoot}/org/apache/geode/management/package-summary.html">management</a></code> + * package instead + */ +public class AgentFactory { + + /** + * Defines a "default" GemFire JMX administration agent configuration. + */ + public static AgentConfig defineAgent() { + return new AgentConfigImpl(); + } + + /** + * Creates an unstarted GemFire JMX administration agent with the given configuration. + * + * @see Agent#start + */ + public static Agent getAgent(AgentConfig config) throws AdminException { + return new AgentImpl((AgentConfigImpl) config); + } + +}
