Просмотр исходного кода

[IdWorker][修改]:IdWorker环境问题修复

release_toaliyun_real
Stormeye Wu 6 лет назад
Родитель
Сommit
adc0cf4d40
2 измененных файлов: 16 добавлений и 9 удалений
  1. +14
    -8
      mallinkService/src/main/java/com/iformall/common/IdWorker.java
  2. +2
    -1
      mallinkService/src/main/java/com/iformall/utils/IPUtil.java

+ 14
- 8
mallinkService/src/main/java/com/iformall/common/IdWorker.java Просмотреть файл

@@ -1,6 +1,8 @@
package com.iformall.common;

import com.iformall.utils.IPUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.lang.management.ManagementFactory;
import java.net.UnknownHostException;
@@ -16,6 +18,7 @@ import java.util.List;
*/

public class IdWorker {
private final Logger logger = LoggerFactory.getLogger(IdWorker.class);
// ==============================Fields===========================================
/** 开始时间截 (2015-01-01) */
private final long twepoch = 1489111610226L;
@@ -60,16 +63,19 @@ public class IdWorker {
private long lastTimestamp = -1L;

/////////////////////////////////////////////////////////////////////////////////

private static class IdGenHolder {
private static final IdWorker instance = new IdWorker();
}

public static IdWorker get(){
return IdGenHolder.instance;
private static IdWorker instance = null;
public static IdWorker get() {
if(instance == null) {
synchronized (IdWorker.class){
if(instance==null){
instance = new IdWorker();
}
}
}
return instance;
}

public IdWorker() {
private IdWorker() {
String ipAddr = "";
try {
ipAddr = IPUtil.getLocalHostLANAddress().getHostAddress();


+ 2
- 1
mallinkService/src/main/java/com/iformall/utils/IPUtil.java Просмотреть файл

@@ -4,6 +4,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.http.HttpServletRequest;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.UnknownHostException;
@@ -62,7 +63,7 @@ public class IPUtil {
// 在所有的接口下再遍历IP
for (Enumeration inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements();) {
InetAddress inetAddr = (InetAddress) inetAddrs.nextElement();
if (!inetAddr.isLoopbackAddress()) {// 排除loopback类型地址
if (!inetAddr.isLoopbackAddress() && (inetAddr instanceof Inet4Address)) {// 排除loopback类型地址, ipv4
if (inetAddr.isSiteLocalAddress()) {
// 如果是site-local地址,就是它了
return inetAddr;


Загрузка…
Отмена
Сохранить