From 48ee4aa712d13815219358f14dc62e5e4f53e696 Mon Sep 17 00:00:00 2001
From: xuxueli <931591021@qq.com>
Date: Sun, 26 Oct 2025 02:55:49 +0800
Subject: [PATCH] =?UTF-8?q?refactor(core):=20=E6=9B=BF=E6=8D=A2IP=E5=B7=A5?=
=?UTF-8?q?=E5=85=B7=E7=B1=BB=E5=AE=9E=E7=8E=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 将IpUtil和NetUtil迁移至deprecated包并注释掉原始代码
- 引入新的IPTool工具类替代原有功能
- 更新JobTrigger中的IP获取逻辑
- 修改XxlJobExecutor中的IP和端口处理方式
- 使用StringTool替代原有的字符串判断逻辑
---
.../admin/scheduler/trigger/JobTrigger.java | 4 +-
.../xxl/job/core/executor/XxlJobExecutor.java | 13 +-
.../java/com/xxl/job/core/util/IpUtil.java | 206 ------------------
.../java/com/xxl/job/core/util/NetUtil.java | 70 ------
.../xxl/job/core/util/deprecated/IpUtil.java | 206 ++++++++++++++++++
.../xxl/job/core/util/deprecated/NetUtil.java | 70 ++++++
6 files changed, 285 insertions(+), 284 deletions(-)
delete mode 100644 xxl-job-core/src/main/java/com/xxl/job/core/util/IpUtil.java
delete mode 100644 xxl-job-core/src/main/java/com/xxl/job/core/util/NetUtil.java
create mode 100644 xxl-job-core/src/main/java/com/xxl/job/core/util/deprecated/IpUtil.java
create mode 100644 xxl-job-core/src/main/java/com/xxl/job/core/util/deprecated/NetUtil.java
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/trigger/JobTrigger.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/trigger/JobTrigger.java
index b60ae4fa..899b8591 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/trigger/JobTrigger.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/trigger/JobTrigger.java
@@ -13,9 +13,9 @@ import com.xxl.job.core.biz.ExecutorBiz;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.biz.model.TriggerParam;
import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
-import com.xxl.job.core.util.IpUtil;
import com.xxl.tool.core.StringTool;
import com.xxl.tool.exception.ThrowableTool;
+import com.xxl.tool.http.IPTool;
import jakarta.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -192,7 +192,7 @@ public class JobTrigger {
// 5、collection trigger info
StringBuilder triggerMsgSb = new StringBuilder();
triggerMsgSb.append(I18nUtil.getString("jobconf_trigger_type")).append(":").append(triggerType.getTitle());
- triggerMsgSb.append("
").append(I18nUtil.getString("jobconf_trigger_admin_adress")).append(":").append(IpUtil.getIp());
+ triggerMsgSb.append("
").append(I18nUtil.getString("jobconf_trigger_admin_adress")).append(":").append(IPTool.getIp());
triggerMsgSb.append("
").append(I18nUtil.getString("jobconf_trigger_exe_regtype")).append(":")
.append( (group.getAddressType() == 0)?I18nUtil.getString("jobgroup_field_addressType_0"):I18nUtil.getString("jobgroup_field_addressType_1") );
triggerMsgSb.append("
").append(I18nUtil.getString("jobconf_trigger_exe_regaddress")).append(":").append(group.getRegistryList());
diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java b/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java
index ae94795d..c0cc5686 100644
--- a/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java
+++ b/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java
@@ -10,8 +10,8 @@ import com.xxl.job.core.server.EmbedServer;
import com.xxl.job.core.thread.JobLogFileCleanThread;
import com.xxl.job.core.thread.JobThread;
import com.xxl.job.core.thread.TriggerCallbackThread;
-import com.xxl.job.core.util.IpUtil;
-import com.xxl.job.core.util.NetUtil;
+import com.xxl.tool.core.StringTool;
+import com.xxl.tool.http.IPTool;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -147,12 +147,13 @@ public class XxlJobExecutor {
private void initEmbedServer(String address, String ip, int port, String appname, String accessToken) throws Exception {
// fill ip port
- port = port>0?port: NetUtil.findAvailablePort(9999);
- ip = (ip!=null&&ip.trim().length()>0)?ip: IpUtil.getIp();
+ port = port>0?port: IPTool.getAvailablePort(9999);
+ ip = StringTool.isNotBlank(ip) ? ip : IPTool.getIp();
// generate address
- if (address==null || address.trim().length()==0) {
- String ip_port_address = IpUtil.getIpPort(ip, port); // registry-address:default use address to registry , otherwise use ip:port if address is null
+ if (StringTool.isBlank(address)) {
+ // registry-address:default use address to registry , otherwise use ip:port if address is null
+ String ip_port_address = IPTool.toAddressString(IPTool.toAddress(ip, port));
address = "http://{ip_port}/".replace("{ip_port}", ip_port_address);
}
diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/util/IpUtil.java b/xxl-job-core/src/main/java/com/xxl/job/core/util/IpUtil.java
deleted file mode 100644
index d63f3dd8..00000000
--- a/xxl-job-core/src/main/java/com/xxl/job/core/util/IpUtil.java
+++ /dev/null
@@ -1,206 +0,0 @@
-package com.xxl.job.core.util;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.net.Inet6Address;
-import java.net.InetAddress;
-import java.net.NetworkInterface;
-import java.net.UnknownHostException;
-import java.util.Enumeration;
-import java.util.regex.Pattern;
-
-/**
- * ip tool
- *
- * @author xuxueli 2016-5-22 11:38:05
- */
-public class IpUtil {
- private static final Logger logger = LoggerFactory.getLogger(IpUtil.class);
-
- private static final String ANYHOST_VALUE = "0.0.0.0";
- private static final String LOCALHOST_VALUE = "127.0.0.1";
- private static final Pattern IP_PATTERN = Pattern.compile("\\d{1,3}(\\.\\d{1,3}){3,5}$");
-
-
-
- private static volatile InetAddress LOCAL_ADDRESS = null;
-
- // ---------------------- valid ----------------------
-
- private static InetAddress toValidAddress(InetAddress address) {
- if (address instanceof Inet6Address) {
- Inet6Address v6Address = (Inet6Address) address;
- if (isPreferIPV6Address()) {
- return normalizeV6Address(v6Address);
- }
- }
- if (isValidV4Address(address)) {
- return address;
- }
- return null;
- }
-
- private static boolean isPreferIPV6Address() {
- return Boolean.getBoolean("java.net.preferIPv6Addresses");
- }
-
- /**
- * valid Inet4Address
- *
- * @param address
- * @return
- */
- private static boolean isValidV4Address(InetAddress address) {
- if (address == null || address.isLoopbackAddress()) {
- return false;
- }
- String name = address.getHostAddress();
- boolean result = (name != null
- && IP_PATTERN.matcher(name).matches()
- && !ANYHOST_VALUE.equals(name)
- && !LOCALHOST_VALUE.equals(name));
- return result;
- }
-
-
- /**
- * normalize the ipv6 Address, convert scope name to scope id.
- * e.g.
- * convert
- * fe80:0:0:0:894:aeec:f37d:23e1%en0
- * to
- * fe80:0:0:0:894:aeec:f37d:23e1%5
- *
- * The %5 after ipv6 address is called scope id.
- * see java doc of {@link Inet6Address} for more details.
- *
- * @param address the input address
- * @return the normalized address, with scope id converted to int
- */
- private static InetAddress normalizeV6Address(Inet6Address address) {
- String addr = address.getHostAddress();
- int i = addr.lastIndexOf('%');
- if (i > 0) {
- try {
- return InetAddress.getByName(addr.substring(0, i) + '%' + address.getScopeId());
- } catch (UnknownHostException e) {
- // ignore
- logger.debug("Unknown IPV6 address: ", e);
- }
- }
- return address;
- }
-
- // ---------------------- find ip ----------------------
-
-
- private static InetAddress getLocalAddress0() {
- InetAddress localAddress = null;
- // 1、prefer filter NetworkInterface
- try {
- Enumeration
+// * The %5 after ipv6 address is called scope id.
+// * see java doc of {@link Inet6Address} for more details.
+// *
+// * @param address the input address
+// * @return the normalized address, with scope id converted to int
+// */
+// private static InetAddress normalizeV6Address(Inet6Address address) {
+// String addr = address.getHostAddress();
+// int i = addr.lastIndexOf('%');
+// if (i > 0) {
+// try {
+// return InetAddress.getByName(addr.substring(0, i) + '%' + address.getScopeId());
+// } catch (UnknownHostException e) {
+// // ignore
+// logger.debug("Unknown IPV6 address: ", e);
+// }
+// }
+// return address;
+// }
+//
+// // ---------------------- find ip ----------------------
+//
+//
+// private static InetAddress getLocalAddress0() {
+// InetAddress localAddress = null;
+// // 1、prefer filter NetworkInterface
+// try {
+// Enumeration