/* * JBoss, Home of Professional Open Source. * Copyright 2011, Red Hat, Inc., and individual contributors * as indicated by the @author tags. See the copyright.txt file in the * distribution for a full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jboss.as.platform.mbean; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.CORE_SERVICE; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.PLATFORM_MBEAN; import java.lang.management.ManagementFactory; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.PathElement; import org.jboss.as.controller.SimpleAttributeDefinition; import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; import org.jboss.as.controller.client.helpers.MeasurementUnit; import org.jboss.as.controller.descriptions.ModelDescriptionConstants; import org.jboss.dmr.ModelType; /** * Constants used in this module. * * @author Brian Stansberry (c) 2011 Red Hat Inc. */ public class PlatformMBeanConstants { // Base values public static final String CLASS_LOADING = "class-loading"; public static final String COMPILATION = "compilation"; public static final String GARBAGE_COLLECTOR = "garbage-collector"; public static final String MEMORY_MANAGER = "memory-manager"; public static final String MEMORY = "memory"; public static final String MEMORY_POOL = "memory-pool"; public static final String OPERATING_SYSTEM = "operating-system"; public static final String RUNTIME = "runtime"; public static final String THREADING = "threading"; // JDK 7 additions public static final String BUFFER_POOL = "buffer-pool"; public static final String LOGGING = "logging"; public static final String PLATFORM_LOGGING_MXBEAN_NAME = "java.util.logging:type=Logging"; public static final String BUFFER_POOL_MXBEAN_DOMAIN_TYPE = "java.nio:type=BufferPool"; public static final ObjectName PLATFORM_LOGGING_OBJECT_NAME; public static final List<String> JDK_NOCOMPILATION_TYPES = Arrays.asList(CLASS_LOADING, GARBAGE_COLLECTOR, MEMORY_MANAGER, MEMORY, MEMORY_POOL, OPERATING_SYSTEM, RUNTIME, THREADING); private static final List<String> JDK6_BASE_TYPES = Arrays.asList(CLASS_LOADING, COMPILATION, GARBAGE_COLLECTOR, MEMORY_MANAGER, MEMORY, MEMORY_POOL, OPERATING_SYSTEM, RUNTIME, THREADING); public static final List<String> BASE_TYPES; static SimpleAttributeDefinition OBJECT_NAME = SimpleAttributeDefinitionBuilder.create("object-name", ModelType.STRING, true) .setStorageRuntime() .setRuntimeServiceNotRequired() .build(); // ClassLoadingMXBean public static final String TOTAL_LOADED_CLASS_COUNT = "total-loaded-class-count"; public static final String LOADED_CLASS_COUNT = "loaded-class-count"; public static final String UNLOADED_CLASS_COUNT = "unloaded-class-count"; public static final String VERBOSE = "verbose"; // CompilationMXBean public static final String COMPILATION_TIME_MONITORING_SUPPORTED = "compilation-time-monitoring-supported"; public static final String TOTAL_COMPILATION_TIME = "total-compilation-time"; // GarbageCollectorMXBean public static final String MEMORY_POOL_NAMES = "memory-pool-names"; public static final String COLLECTION_COUNT = "collection-count"; public static final String COLLECTION_TIME = "collection-time"; // MemoryMXBean public static final String OBJECT_PENDING_FINALIZATION_COUNT = "object-pending-finalization-count"; public static final String HEAP_MEMORY_USAGE = "heap-memory-usage"; public static final String NON_HEAP_MEMORY_USAGE = "non-heap-memory-usage"; public static final String GC = "gc"; public static final String INIT = "init"; static SimpleAttributeDefinition MEMORY_INIT = SimpleAttributeDefinitionBuilder.create(INIT, ModelType.LONG, true) .setStorageRuntime() .setRuntimeServiceNotRequired() .setMeasurementUnit(MeasurementUnit.BYTES) .build(); public static final String USED = "used"; static SimpleAttributeDefinition MEMORY_USED = SimpleAttributeDefinitionBuilder.create(USED, ModelType.LONG, true) .setStorageRuntime() .setRuntimeServiceNotRequired() .setMeasurementUnit(MeasurementUnit.BYTES) .build(); public static final String COMMITTED = "committed"; static SimpleAttributeDefinition MEMORY_COMMITTED = SimpleAttributeDefinitionBuilder.create(COMMITTED, ModelType.LONG, true) .setStorageRuntime() .setRuntimeServiceNotRequired() .setMeasurementUnit(MeasurementUnit.BYTES) .build(); public static final String MAX = "max"; static SimpleAttributeDefinition MEMORY_MAX = SimpleAttributeDefinitionBuilder.create(MAX, ModelType.LONG, true) .setStorageRuntime() .setRuntimeServiceNotRequired() .setMeasurementUnit(MeasurementUnit.BYTES) .build(); // MemoryPoolMXBean public static final String TYPE = "type"; public static final String USAGE = "usage"; public static final String PEAK_USAGE = "peak-usage"; public static final String MEMORY_MANAGER_NAMES = "memory-manager-names"; public static final String USAGE_THRESHOLD = "usage-threshold"; public static final String USAGE_THRESHOLD_EXCEEDED = "usage-threshold-exceeded"; public static final String USAGE_THRESHOLD_COUNT = "usage-threshold-count"; public static final String USAGE_THRESHOLD_SUPPORTED = "usage-threshold-supported"; public static final String COLLECTION_USAGE_THRESHOLD = "collection-usage-threshold"; public static final String COLLECTION_USAGE_THRESHOLD_EXCEEDED = "collection-usage-threshold-exceeded"; public static final String COLLECTION_USAGE_THRESHOLD_COUNT = "collection-usage-threshold-count"; public static final String COLLECTION_USAGE = "collection-usage"; public static final String COLLECTION_USAGE_THRESHOLD_SUPPORTED = "collection-usage-threshold-supported"; public static final String RESET_PEAK_USAGE = "reset-peak-usage"; // OperatingSystemMXBean public static final String ARCH = "arch"; public static final String VERSION = "version"; public static final String AVAILABLE_PROCESSORS = "available-processors"; public static final String SYSTEM_LOAD_AVERAGE = "system-load-average"; // RuntimeMXBean public static final String VM_NAME = "vm-name"; public static final String VM_VENDOR = "vm-vendor"; public static final String VM_VERSION = "vm-version"; public static final String SPEC_NAME = "spec-name"; public static final String SPEC_VENDOR = "spec-vendor"; public static final String SPEC_VERSION = "spec-version"; public static final String MANAGEMENT_SPEC_VERSION = "management-spec-version"; public static final String CLASS_PATH = "class-path"; public static final String LIBRARY_PATH = "library-path"; public static final String BOOT_CLASS_PATH_SUPPORTED = "boot-class-path-supported"; public static final String BOOT_CLASS_PATH = "boot-class-path"; public static final String INPUT_ARGUMENTS = "input-arguments"; public static final String UPTIME = "uptime"; public static final String START_TIME = "start-time"; public static final String SYSTEM_PROPERTIES = "system-properties"; // ThreadMXBean public static final String THREAD_COUNT = "thread-count"; public static final String PEAK_THREAD_COUNT = "peak-thread-count"; public static final String TOTAL_STARTED_THREAD_COUNT = "total-started-thread-count"; public static final String DAEMON_THREAD_COUNT = "daemon-thread-count"; public static final String ALL_THREAD_IDS = "all-thread-ids"; public static final String THREAD_CONTENTION_MONITORING_SUPPORTED = "thread-contention-monitoring-supported"; public static final String THREAD_CONTENTION_MONITORING_ENABLED = "thread-contention-monitoring-enabled"; public static final String CURRENT_THREAD_CPU_TIME = "current-thread-cpu-time"; public static final String CURRENT_THREAD_USER_TIME = "current-thread-user-time"; public static final String THREAD_CPU_TIME_SUPPORTED = "thread-cpu-time-supported"; public static final String CURRENT_THREAD_CPU_TIME_SUPPORTED = "current-thread-cpu-time-supported"; public static final String THREAD_CPU_TIME_ENABLED = "thread-cpu-time-enabled"; public static final String OBJECT_MONITOR_USAGE_SUPPORTED = "object-monitor-usage-supported"; public static final String SYNCHRONIZER_USAGE_SUPPORTED = "synchronizer-usage-supported"; public static final String RESET_PEAK_THREAD_COUNT = "reset-peak-thread-count"; public static final String FIND_DEADLOCKED_THREADS = "find-deadlocked-threads"; public static final String FIND_MONITOR_DEADLOCKED_THREADS = "find-monitor-deadlocked-threads"; public static final String GET_THREAD_INFO = "get-thread-info"; public static final String GET_THREAD_INFOS = "get-thread-infos"; public static final String GET_THREAD_CPU_TIME = "get-thread-cpu-time"; public static final String GET_THREAD_USER_TIME = "get-thread-user-time"; public static final String DUMP_ALL_THREADS = "dump-all-threads"; public static final String ID = "id"; public static final String IDS = "ids"; public static final String MAX_DEPTH = "max-depth"; public static final String LOCKED_MONITORS = "locked-monitors"; public static final String LOCKED_SYNCHRONIZERS = "locked-synchronizers"; public static final String FILE_NAME = "file-name"; public static final String LINE_NUMBER = "line-number"; public static final String CLASS_NAME = "class-name"; public static final String METHOD_NAME = "method-name"; public static final String NATIVE_METHOD = "native-method"; public static final String THREAD_ID = "thread-id"; public static final String THREAD_NAME = "thread-name"; public static final String THREAD_STATE = "thread-state"; public static final String BLOCKED_TIME = "blocked-time"; public static final String BLOCKED_COUNT = "blocked-count"; public static final String WAITED_TIME = "waited-time"; public static final String WAITED_COUNT = "waited-count"; public static final String LOCK_INFO = "lock-info"; public static final String LOCK_NAME = "lock-name"; public static final String LOCK_OWNER_ID = "lock-owner-id"; public static final String LOCK_OWNER_NAME = "lock-owner-name"; public static final String STACK_TRACE = "stack-trace"; public static final String SUSPENDED = "suspended"; public static final String IN_NATIVE = "in-native"; public static final String IDENTITY_HASH_CODE = "identity-hash-code"; public static final String LOCKED_STACK_DEPTH = "locked-stack-depth"; public static final String LOCKED_STACK_FRAME = "locked-stack-frame"; // BufferPoolMXBean public static final String COUNT = "count"; public static final String MEMORY_USED_NAME = "memory-used"; public static final String TOTAL_CAPACITY = "total-capacity"; // PlatformLoggingMXBean public static final String LOGGER_NAMES = "logger-names"; public static final List<String> LOGGING_READ_ATTRIBUTES = Arrays.asList( LOGGER_NAMES ); public static final String GET_LOGGER_LEVEL = "get-logger-level"; public static final String SET_LOGGER_LEVEL = "set-logger-level"; public static final String GET_PARENT_LOGGER_NAME = "get-parent-logger-name"; public static final String LOGGER_NAME = "logger-name"; public static final String LEVEL_NAME = "level-name"; // Paths public static final PathElement ROOT_PATH = PathElement.pathElement(ModelDescriptionConstants.CORE_SERVICE, ModelDescriptionConstants.PLATFORM_MBEAN); public static final PathElement CLASS_LOADING_PATH = PathElement.pathElement(ModelDescriptionConstants.TYPE, CLASS_LOADING); public static final PathElement COMPILATION_PATH = PathElement.pathElement(ModelDescriptionConstants.TYPE, COMPILATION); public static final PathElement GARBAGE_COLLECTOR_PATH = PathElement.pathElement(ModelDescriptionConstants.TYPE, GARBAGE_COLLECTOR); public static final PathElement MEMORY_MANAGER_PATH = PathElement.pathElement(ModelDescriptionConstants.TYPE, MEMORY_MANAGER); public static final PathElement MEMORY_PATH = PathElement.pathElement(ModelDescriptionConstants.TYPE, MEMORY); public static final PathElement MEMORY_POOL_PATH = PathElement.pathElement(ModelDescriptionConstants.TYPE, MEMORY_POOL); public static final PathElement OPERATING_SYSTEM_PATH = PathElement.pathElement(ModelDescriptionConstants.TYPE, OPERATING_SYSTEM); public static final PathElement RUNTIME_PATH = PathElement.pathElement(ModelDescriptionConstants.TYPE, RUNTIME); public static final PathElement THREADING_PATH = PathElement.pathElement(ModelDescriptionConstants.TYPE, THREADING); public static final PathElement BUFFER_POOL_PATH = PathElement.pathElement(ModelDescriptionConstants.TYPE, BUFFER_POOL); public static final PathElement LOGGING_PATH = PathElement.pathElement(ModelDescriptionConstants.TYPE, LOGGING); static { final List<String> JDK6 = ManagementFactory.getCompilationMXBean() == null ? JDK_NOCOMPILATION_TYPES : JDK6_BASE_TYPES; List<String> list = new ArrayList<String>(JDK6); list.add(BUFFER_POOL); // list.add(LOGGING); AS7-2185 BASE_TYPES = Collections.unmodifiableList(list); try { PLATFORM_LOGGING_OBJECT_NAME = new ObjectName(PLATFORM_LOGGING_MXBEAN_NAME); } catch (MalformedObjectNameException e) { // Shouldn't happen; just satisfy compiler throw new IllegalStateException(PLATFORM_LOGGING_MXBEAN_NAME + " somehow isn't a legal object name???"); } } static final PathElement PLATFORM_MBEAN_PATH = PathElement.pathElement(CORE_SERVICE, PLATFORM_MBEAN); //read attributes static AttributeDefinition NAME = SimpleAttributeDefinitionBuilder.create(ModelDescriptionConstants.NAME, ModelType.STRING, true) .setStorageRuntime() .setRuntimeServiceNotRequired() .build(); static AttributeDefinition VALID = SimpleAttributeDefinitionBuilder.create(ModelDescriptionConstants.VALID, ModelType.BOOLEAN, false) .setStorageRuntime() .setRuntimeServiceNotRequired() .build(); private PlatformMBeanConstants() { // prevent instantiation } }