mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-10 19:36:50 +08:00
修改运行机制
This commit is contained in:
@@ -1,30 +1,17 @@
|
||||
package com.xboe;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.NetworkInterface;
|
||||
import java.net.SocketException;
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.apache.commons.lang3.RandomUtils;
|
||||
import org.springframework.boot.ApplicationArguments;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.xboe.common.utils.IDGenerator;
|
||||
import com.xboe.module.idconfig.entity.IPMapping;
|
||||
import com.xboe.module.idconfig.service.IIPMappingService;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import com.xboe.module.idconfig.IdGeneratorAutoConfig;
|
||||
|
||||
/**
|
||||
* 启动就执行的一些处理
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class ApplicationStartRunner implements ApplicationRunner {
|
||||
|
||||
@@ -32,64 +19,12 @@ public class ApplicationStartRunner implements ApplicationRunner {
|
||||
Environment env;
|
||||
|
||||
@Resource
|
||||
IIPMappingService ipMappingService;
|
||||
IdGeneratorAutoConfig autoConfig;
|
||||
|
||||
@Override
|
||||
public void run(ApplicationArguments args) throws Exception {
|
||||
|
||||
// Map<String,Integer> ipconfig=new HashMap<>();
|
||||
// ipconfig.put("10.251.186.27",0);//测试环境
|
||||
// ipconfig.put("10.251.132.41",1);
|
||||
// ipconfig.put("10.251.132.42",2);
|
||||
// ipconfig.put("10.251.132.47",3);
|
||||
|
||||
String ip=getLinuxLocalIp();
|
||||
|
||||
IPMapping ipm = ipMappingService.findByIP(ip);
|
||||
Integer workServerId=null;
|
||||
Integer dataCenterId=null;
|
||||
if(ipm!=null) {
|
||||
workServerId=ipm.getWorkNum();
|
||||
dataCenterId=ipm.getDcNum();
|
||||
}else {
|
||||
log.warn("无IP【"+ip+"】的配置的workNum和DataCenterNum,系统自动生成随机数");
|
||||
workServerId=RandomUtils.nextInt(0,31);
|
||||
dataCenterId=RandomUtils.nextInt(0,31);
|
||||
ipm=new IPMapping();
|
||||
ipm.setIp(ip);
|
||||
ipm.setDcNum(dataCenterId);
|
||||
ipm.setWorkNum(workServerId);
|
||||
ipMappingService.save(ipm);
|
||||
}
|
||||
IDGenerator.init(workServerId,dataCenterId);
|
||||
//多服务器配置时生成的id根据服务器ip地址不同参数不同,防止不同服务器生成的id重复问题
|
||||
autoConfig.init();
|
||||
}
|
||||
|
||||
private static String getLinuxLocalIp() throws SocketException {
|
||||
String ip = "";
|
||||
try {
|
||||
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
|
||||
NetworkInterface intf = en.nextElement();
|
||||
//String name = intf.getName();
|
||||
//if (!name.contains("docker") && !name.contains("lo")){
|
||||
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
|
||||
InetAddress inetAddress = enumIpAddr.nextElement();
|
||||
if (!inetAddress.isLoopbackAddress()) {
|
||||
String ipaddress = inetAddress.getHostAddress().toString();
|
||||
if (!ipaddress.contains(":") && !ipaddress.contains("::") && !ipaddress.contains("0:0:") && !ipaddress.contains("fe80")) {
|
||||
ip = ipaddress;
|
||||
//log.error("获取的ip:"+ipaddress);
|
||||
}
|
||||
}
|
||||
}
|
||||
//}
|
||||
}
|
||||
}catch (SocketException ex) {
|
||||
ip = "127.0.0.1";
|
||||
//log.error("获取ip地址异常",ex);
|
||||
}
|
||||
//log.error("获取的实际的ip:"+ip);
|
||||
return ip;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user