001
014
015 package com.liferay.portal.fabric.status;
016
017 import com.liferay.portal.fabric.status.JMXProxyUtil.ProcessCallableExecutor;
018 import com.liferay.portal.kernel.concurrent.DefaultNoticeableFuture;
019 import com.liferay.portal.kernel.concurrent.NoticeableFuture;
020 import com.liferay.portal.kernel.process.ProcessCallable;
021 import com.liferay.portal.kernel.process.ProcessException;
022
023 import java.io.Serializable;
024
025 import java.lang.management.BufferPoolMXBean;
026 import java.lang.management.ClassLoadingMXBean;
027 import java.lang.management.CompilationMXBean;
028 import java.lang.management.GarbageCollectorMXBean;
029 import java.lang.management.ManagementFactory;
030 import java.lang.management.MemoryMXBean;
031 import java.lang.management.MemoryManagerMXBean;
032 import java.lang.management.MemoryPoolMXBean;
033 import java.lang.management.OperatingSystemMXBean;
034 import java.lang.management.PlatformLoggingMXBean;
035 import java.lang.management.RuntimeMXBean;
036 import java.lang.management.ThreadMXBean;
037
038 import java.util.List;
039
040
043 public class LocalFabricStatus implements FabricStatus {
044
045 public static final FabricStatus INSTANCE = new LocalFabricStatus();
046
047 @Override
048 public AdvancedOperatingSystemMXBean getAdvancedOperatingSystemMXBean() {
049 OperatingSystemMXBean operatingSystemMXBean =
050 ManagementFactory.getOperatingSystemMXBean();
051
052 return JMXProxyUtil.newProxy(
053 operatingSystemMXBean.getObjectName(),
054 AdvancedOperatingSystemMXBean.class, processCallableExecutor);
055 }
056
057 @Override
058 public List<BufferPoolMXBean> getBufferPoolMXBeans() {
059 return ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class);
060 }
061
062 @Override
063 public ClassLoadingMXBean getClassLoadingMXBean() {
064 return ManagementFactory.getClassLoadingMXBean();
065 }
066
067 @Override
068 public CompilationMXBean getCompilationMXBean() {
069 return ManagementFactory.getCompilationMXBean();
070 }
071
072 @Override
073 public List<GarbageCollectorMXBean> getGarbageCollectorMXBeans() {
074 return ManagementFactory.getPlatformMXBeans(
075 GarbageCollectorMXBean.class);
076 }
077
078 @Override
079 public List<MemoryManagerMXBean> getMemoryManagerMXBeans() {
080 return ManagementFactory.getPlatformMXBeans(MemoryManagerMXBean.class);
081 }
082
083 @Override
084 public MemoryMXBean getMemoryMXBean() {
085 return ManagementFactory.getMemoryMXBean();
086 }
087
088 @Override
089 public List<MemoryPoolMXBean> getMemoryPoolMXBeans() {
090 return ManagementFactory.getPlatformMXBeans(MemoryPoolMXBean.class);
091 }
092
093 @Override
094 public PlatformLoggingMXBean getPlatformLoggingMXBean() {
095 return ManagementFactory.getPlatformMXBean(PlatformLoggingMXBean.class);
096 }
097
098 @Override
099 public RuntimeMXBean getRuntimeMXBean() {
100 return ManagementFactory.getRuntimeMXBean();
101 }
102
103 @Override
104 public ThreadMXBean getThreadMXBean() {
105 return ManagementFactory.getThreadMXBean();
106 }
107
108 protected static final ProcessCallableExecutor processCallableExecutor =
109 new ProcessCallableExecutor() {
110
111 @Override
112 public <V extends Serializable> NoticeableFuture<V> execute(
113 ProcessCallable<V> processCallable) {
114
115 DefaultNoticeableFuture<V> defaultNoticeableFuture =
116 new DefaultNoticeableFuture<>();
117
118 try {
119 defaultNoticeableFuture.set(processCallable.call());
120 }
121 catch (ProcessException pe) {
122 defaultNoticeableFuture.setException(pe);
123 }
124
125 return defaultNoticeableFuture;
126 }
127
128 };
129
130 private LocalFabricStatus() {
131 }
132
133 }