package org.etk.kernel.container.monitor.jvm; import java.lang.management.ManagementFactory; import org.etk.kernel.container.BaseContainerLifecyclePlugin; import org.etk.kernel.container.KernelContainer; public class AddJVMComponentsToRootContainer extends BaseContainerLifecyclePlugin { public void initContainer(KernelContainer container) { attemptToRegisterMXComponent(container, ManagementFactory.getOperatingSystemMXBean()); attemptToRegisterMXComponent(container, ManagementFactory.getRuntimeMXBean()); attemptToRegisterMXComponent(container, ManagementFactory.getThreadMXBean()); attemptToRegisterMXComponent(container, ManagementFactory.getClassLoadingMXBean()); attemptToRegisterMXComponent(container, ManagementFactory.getCompilationMXBean()); attemptToRegisterMXComponent(container, new MemoryInfo()); attemptToRegisterMXComponent(container, JVMRuntimeInfo.MEMORY_MANAGER_MXBEANS, ManagementFactory.getMemoryManagerMXBeans()); attemptToRegisterMXComponent(container, JVMRuntimeInfo.MEMORY_POOL_MXBEANS, ManagementFactory.getMemoryPoolMXBeans()); attemptToRegisterMXComponent(container, JVMRuntimeInfo.GARBAGE_COLLECTOR_MXBEANS, ManagementFactory.getGarbageCollectorMXBeans()); } private void attemptToRegisterMXComponent(KernelContainer container, Object mxComponent) { if (mxComponent != null) { container.registerComponentInstance(mxComponent); } } private void attemptToRegisterMXComponent(KernelContainer container, Object mxKey, Object mxComponent) { if (mxComponent != null) { container.registerComponentInstance(mxKey, mxComponent); } } }