/* * Copyright 2012 the original author or authors. * * 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. * */ package org.springframework.data.gemfire.config.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.context.annotation.Import; /** * The EnableManager annotation marks a Spring {@link org.springframework.context.annotation.Configuration @Configuration} * annotated class to configure, embed and start a GemFire/Geode Manager service in the GemFire/Geode Server. * * Automatically sets {@literal jmx-manager} to {@literal true}. * * @author John Blum * @see org.springframework.context.annotation.Import * @see org.springframework.data.gemfire.config.annotation.ManagerConfiguration * @since 1.9.0 */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented @Import(ManagerConfiguration.class) @SuppressWarnings("unused") public @interface EnableManager { /** * By default, the JMX Manager will allow full access to all mbeans by any client. If this property is set to * the name of a file then it can restrict clients to only being able to read MBeans; they will not be able * to modify MBeans. The access level can be configured differently in this file for each user name defined * in the password file. For more information about the format of this file see Oracle's documentation * of the {@code com.sun.management.jmxremote.access.file} System property. Ignored if {@literal jmx-manager} * is false or if {@literal jmx-manager-port} is zero. * * Defaults to unset. */ String accessFile() default ""; /** * By default, the JMX Manager (when configured with a port) will listen on all the local host's addresses. * You can use this property to configure what IP address or host name the JMX Manager will listen on for * non-HTTP connections. Ignored if JMX Manager is {@literal false} or {@literal jmx-manager-port} is zero. * * Defaults to unset. */ String bindAddress() default ""; /** * Lets you control what hostname will be given to clients that ask the Locator for the location of a JMX Manager. * By default, the IP address that the JMX Manager reports is used. But for clients on a different network * this property allows you to configure a different hostname that will be given to clients. Ignored if * {@literal jmx-manager} is {@literal false} or {@literal jmx-manager-port} is zero. * * Defaults to unset. */ String hostnameForClients() default ""; /** * By default, the JMX Manager will allow clients without credentials to connect. If this property is set to * the name of a file then only clients that connect with credentials that match an entry in this file will * be allowed. Most JVMs require that the file is only readable by the owner. For more information about the * format of this file see Oracle's documentation of the {@literal com.sun.management.jmxremote.password.file} * System property. Ignored if {@literal jmx-manager} is {@literal false} or {@literal jmx-manager-port} is zero. * * Defaults to unset. */ String passwordFile() default ""; /** * The port this JMX Manager will listen to for client connections. If this property is set to zero then GemFire * will not allow remote client connections but you can alternatively use the standard System properties supported * by the JVM for configuring access from remote JMX clients. Ignored if {@literal jmx-manager} is {@literal false}. * * Defaults to {@literal 1099}. */ int port() default ManagerConfiguration.DEFAULT_JMX_MANAGER_PORT; /** * If {@literal true} then this member will start a JMX Manager when it creates a cache. Management tools * like Gfsh can be configured to connect to the JMX Manager. In most cases you should not set this * because a JMX Manager will automatically be started when needed on a member that sets {@literal jmx-manager} * to {@literal true}. Ignored if {@literal jmx-manager} is {@literal false}. * * Defaults to {@literal false}. */ boolean start() default false; /** * The rate, in milliseconds, at which this member will push updates to any JMX Managers. Currently this value * should be greater than or equal to the {@literal statistic-sample-rate}. Setting this value too high will * cause stale values to be seen by Gfsh and GemFire Pulse. * * Defaults to {@literal 2000} milliseconds. */ int updateRate() default 2000; }