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 interfaces = NetworkInterface.getNetworkInterfaces();
- if (null == interfaces) {
- return localAddress;
- }
- while (interfaces.hasMoreElements()) {
- try {
- NetworkInterface network = interfaces.nextElement();
- if (network.isLoopback() || network.isVirtual() || !network.isUp()) {
- continue;
- }
- Enumeration addresses = network.getInetAddresses();
- while (addresses.hasMoreElements()) {
- try {
- InetAddress addressItem = toValidAddress(addresses.nextElement());
- if (addressItem != null) {
- try {
- if(addressItem.isReachable(100)){
- return addressItem;
- }
- } catch (IOException e) {
- // ignore
- }
- }
- } catch (Throwable e) {
- logger.error(e.getMessage(), e);
- }
- }
- } catch (Throwable e) {
- logger.error(e.getMessage(), e);
- }
- }
- } catch (Throwable e) {
- logger.error(e.getMessage(), e);
- }
-
- // 2、getLocalAddress
- try {
- localAddress = InetAddress.getLocalHost();
- InetAddress addressItem = toValidAddress(localAddress);
- if (addressItem != null) {
- return addressItem;
- }
- } catch (Throwable e) {
- logger.error(e.getMessage(), e);
- }
-
- return localAddress;
- }
-
-
- // ---------------------- tool ----------------------
-
- /**
- * Find first valid IP from local network card
- *
- * @return first valid local IP
- */
- public static InetAddress getLocalAddress() {
- if (LOCAL_ADDRESS != null) {
- return LOCAL_ADDRESS;
- }
- InetAddress localAddress = getLocalAddress0();
- LOCAL_ADDRESS = localAddress;
- return localAddress;
- }
-
- /**
- * get ip address
- *
- * @return String
- */
- public static String getIp(){
- return getLocalAddress().getHostAddress();
- }
-
- /**
- * get ip:port
- *
- * @param port
- * @return String
- */
- public static String getIpPort(int port){
- String ip = getIp();
- return getIpPort(ip, port);
- }
-
- public static String getIpPort(String ip, int port){
- if (ip==null) {
- return null;
- }
- return ip.concat(":").concat(String.valueOf(port));
- }
-
- public static Object[] parseIpPort(String address){
- String[] array = address.split(":");
-
- String host = array[0];
- int port = Integer.parseInt(array[1]);
-
- return new Object[]{host, port};
- }
-
-
-}
diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/util/NetUtil.java b/xxl-job-core/src/main/java/com/xxl/job/core/util/NetUtil.java
deleted file mode 100644
index 323667bc..00000000
--- a/xxl-job-core/src/main/java/com/xxl/job/core/util/NetUtil.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.xxl.job.core.util;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.net.ServerSocket;
-
-/**
- * net util
- *
- * @author xuxueli 2017-11-29 17:00:25
- */
-public class NetUtil {
- private static Logger logger = LoggerFactory.getLogger(NetUtil.class);
-
- /**
- * find available port
- *
- * @param defaultPort
- * @return
- */
- public static int findAvailablePort(int defaultPort) {
- int portTmp = defaultPort;
- while (portTmp < 65535) {
- if (!isPortUsed(portTmp)) {
- return portTmp;
- } else {
- portTmp++;
- }
- }
- portTmp = defaultPort - 1;
- while (portTmp > 0) {
- if (!isPortUsed(portTmp)) {
- return portTmp;
- } else {
- portTmp--;
- }
- }
- throw new RuntimeException("no available port.");
- }
-
- /**
- * check port used
- *
- * @param port
- * @return
- */
- public static boolean isPortUsed(int port) {
- boolean used = false;
- ServerSocket serverSocket = null;
- try {
- serverSocket = new ServerSocket(port);
- used = false;
- } catch (IOException e) {
- logger.info(">>>>>>>>>>> xxl-job, port[{}] is in use.", port);
- used = true;
- } finally {
- if (serverSocket != null) {
- try {
- serverSocket.close();
- } catch (IOException e) {
- logger.info("");
- }
- }
- }
- return used;
- }
-
-}
diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/util/deprecated/IpUtil.java b/xxl-job-core/src/main/java/com/xxl/job/core/util/deprecated/IpUtil.java
new file mode 100644
index 00000000..95fb3c93
--- /dev/null
+++ b/xxl-job-core/src/main/java/com/xxl/job/core/util/deprecated/IpUtil.java
@@ -0,0 +1,206 @@
+//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 interfaces = NetworkInterface.getNetworkInterfaces();
+// if (null == interfaces) {
+// return localAddress;
+// }
+// while (interfaces.hasMoreElements()) {
+// try {
+// NetworkInterface network = interfaces.nextElement();
+// if (network.isLoopback() || network.isVirtual() || !network.isUp()) {
+// continue;
+// }
+// Enumeration addresses = network.getInetAddresses();
+// while (addresses.hasMoreElements()) {
+// try {
+// InetAddress addressItem = toValidAddress(addresses.nextElement());
+// if (addressItem != null) {
+// try {
+// if(addressItem.isReachable(100)){
+// return addressItem;
+// }
+// } catch (IOException e) {
+// // ignore
+// }
+// }
+// } catch (Throwable e) {
+// logger.error(e.getMessage(), e);
+// }
+// }
+// } catch (Throwable e) {
+// logger.error(e.getMessage(), e);
+// }
+// }
+// } catch (Throwable e) {
+// logger.error(e.getMessage(), e);
+// }
+//
+// // 2、getLocalAddress
+// try {
+// localAddress = InetAddress.getLocalHost();
+// InetAddress addressItem = toValidAddress(localAddress);
+// if (addressItem != null) {
+// return addressItem;
+// }
+// } catch (Throwable e) {
+// logger.error(e.getMessage(), e);
+// }
+//
+// return localAddress;
+// }
+//
+//
+// // ---------------------- tool ----------------------
+//
+// /**
+// * Find first valid IP from local network card
+// *
+// * @return first valid local IP
+// */
+// public static InetAddress getLocalAddress() {
+// if (LOCAL_ADDRESS != null) {
+// return LOCAL_ADDRESS;
+// }
+// InetAddress localAddress = getLocalAddress0();
+// LOCAL_ADDRESS = localAddress;
+// return localAddress;
+// }
+//
+// /**
+// * get ip address
+// *
+// * @return String
+// */
+// public static String getIp(){
+// return getLocalAddress().getHostAddress();
+// }
+//
+// /**
+// * get ip:port
+// *
+// * @param port
+// * @return String
+// */
+// public static String getIpPort(int port){
+// String ip = getIp();
+// return getIpPort(ip, port);
+// }
+//
+// public static String getIpPort(String ip, int port){
+// if (ip==null) {
+// return null;
+// }
+// return ip.concat(":").concat(String.valueOf(port));
+// }
+//
+// public static Object[] parseIpPort(String address){
+// String[] array = address.split(":");
+//
+// String host = array[0];
+// int port = Integer.parseInt(array[1]);
+//
+// return new Object[]{host, port};
+// }
+//
+//
+//}
diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/util/deprecated/NetUtil.java b/xxl-job-core/src/main/java/com/xxl/job/core/util/deprecated/NetUtil.java
new file mode 100644
index 00000000..f983e49c
--- /dev/null
+++ b/xxl-job-core/src/main/java/com/xxl/job/core/util/deprecated/NetUtil.java
@@ -0,0 +1,70 @@
+//package com.xxl.job.core.util;
+//
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//
+//import java.io.IOException;
+//import java.net.ServerSocket;
+//
+///**
+// * net util
+// *
+// * @author xuxueli 2017-11-29 17:00:25
+// */
+//public class NetUtil {
+// private static Logger logger = LoggerFactory.getLogger(NetUtil.class);
+//
+// /**
+// * find available port
+// *
+// * @param defaultPort
+// * @return
+// */
+// public static int findAvailablePort(int defaultPort) {
+// int portTmp = defaultPort;
+// while (portTmp < 65535) {
+// if (!isPortUsed(portTmp)) {
+// return portTmp;
+// } else {
+// portTmp++;
+// }
+// }
+// portTmp = defaultPort - 1;
+// while (portTmp > 0) {
+// if (!isPortUsed(portTmp)) {
+// return portTmp;
+// } else {
+// portTmp--;
+// }
+// }
+// throw new RuntimeException("no available port.");
+// }
+//
+// /**
+// * check port used
+// *
+// * @param port
+// * @return
+// */
+// public static boolean isPortUsed(int port) {
+// boolean used = false;
+// ServerSocket serverSocket = null;
+// try {
+// serverSocket = new ServerSocket(port);
+// used = false;
+// } catch (IOException e) {
+// logger.info(">>>>>>>>>>> xxl-job, port[{}] is in use.", port);
+// used = true;
+// } finally {
+// if (serverSocket != null) {
+// try {
+// serverSocket.close();
+// } catch (IOException e) {
+// logger.info("");
+// }
+// }
+// }
+// return used;
+// }
+//
+//}