diff --git a/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java b/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java
index 3e469c858..186ca5279 100755
--- a/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java
@@ -461,7 +461,8 @@ public class NetUtil {
* 如果获取失败调用 {@link InetAddress#getLocalHost()}方法获取。
* 此方法不会抛出异常,获取失败将返回{@code null}
*
- * 参考:http://stackoverflow.com/questions/9481865/getting-the-ip-address-of-the-current-machine-using-java + * 参考: + * http://stackoverflow.com/questions/9481865/getting-the-ip-address-of-the-current-machine-using-java * * @return 本机网卡IP地址,获取失败返回{@code null} * @since 3.0.7 @@ -484,7 +485,7 @@ public class NetUtil { *
* 此方法不会抛出异常,获取失败将返回{@code null}
*
- * 见:https://github.com/dromara/hutool/issues/428
+ * 见:https://github.com/dromara/hutool/issues/428
*
* @return 本机网卡IP地址,获取失败返回{@code null}
* @since 3.0.1
diff --git a/hutool-extra/src/main/java/cn/hutool/extra/management/ManagementException.java b/hutool-extra/src/main/java/cn/hutool/extra/management/ManagementException.java
new file mode 100644
index 000000000..e46531f4c
--- /dev/null
+++ b/hutool-extra/src/main/java/cn/hutool/extra/management/ManagementException.java
@@ -0,0 +1,37 @@
+package cn.hutool.extra.management;
+
+import cn.hutool.core.exceptions.ExceptionUtil;
+import cn.hutool.core.text.StrUtil;
+
+/**
+ * FtpException异常
+ *
+ * @author xiaoleilu
+ */
+public class ManagementException extends RuntimeException {
+ private static final long serialVersionUID = 1L;
+
+ public ManagementException(final Throwable e) {
+ super(ExceptionUtil.getMessage(e), e);
+ }
+
+ public ManagementException(final String message) {
+ super(message);
+ }
+
+ public ManagementException(final String messageTemplate, final Object... params) {
+ super(StrUtil.format(messageTemplate, params));
+ }
+
+ public ManagementException(final String message, final Throwable throwable) {
+ super(message, throwable);
+ }
+
+ public ManagementException(final String message, final Throwable throwable, final boolean enableSuppression, final boolean writableStackTrace) {
+ super(message, throwable, enableSuppression, writableStackTrace);
+ }
+
+ public ManagementException(final Throwable throwable, final String messageTemplate, final Object... params) {
+ super(StrUtil.format(messageTemplate, params), throwable);
+ }
+}
diff --git a/hutool-extra/src/main/java/cn/hutool/extra/management/ManagementUtil.java b/hutool-extra/src/main/java/cn/hutool/extra/management/ManagementUtil.java
index 6f208da1f..0b57d3682 100644
--- a/hutool-extra/src/main/java/cn/hutool/extra/management/ManagementUtil.java
+++ b/hutool-extra/src/main/java/cn/hutool/extra/management/ManagementUtil.java
@@ -4,6 +4,8 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.Singleton;
import cn.hutool.core.text.StrUtil;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
import java.io.PrintWriter;
import java.lang.management.ClassLoadingMXBean;
import java.lang.management.CompilationMXBean;
@@ -18,8 +20,11 @@ import java.lang.management.ThreadMXBean;
import java.util.List;
/**
- * Java的System类封装工具类。
- * 参考:http://blog.csdn.net/zhongweijian/article/details/7619383
+ * Java的JMX(Java Management Extensions)相关封装工具类。
+ * JMX就是Java管理扩展,用来管理和监测 Java 程序。最常用到的就是对于 JVM 的监测和管理,比如 JVM 内存、CPU 使用率、线程数、垃圾收集情况等等。
+ * 参考:
+ * http://blog.csdn.net/zhongweijian/article/details/7619383
+ * https://zhuanlan.zhihu.com/p/166530442
*
* @author Looly
*/
@@ -246,6 +251,32 @@ public class ManagementUtil {
return ManagementFactory.getGarbageCollectorMXBeans();
}
+ /**
+ * 获取{@link MBeanServer}
+ * MBeanServer是负责管理MBean的,一般一个JVM只有一个MBeanServer,所有的MBean都要注册到MBeanServer上,并通过 MBeanServer 对外提供服务。
+ *
+ * @return {@link MBeanServer}
+ * @since 6.0.0
+ */
+ public static MBeanServer getMBeanServer() {
+ return ManagementFactory.getPlatformMBeanServer();
+ }
+
+ /**
+ * 注册MBean
+ *
+ * @param mBean Mbean对象
+ * @param name MBean 的唯一标示
+ * @since 6.0.0
+ */
+ public static void registerMBean(final Object mBean, final ObjectName name) {
+ try {
+ getMBeanServer().registerMBean(mBean, name);
+ } catch (final Exception e) {
+ throw new ManagementException(e);
+ }
+ }
+
/**
* 取得Java Virtual Machine Specification的信息。
*