package com.easyooo.framework.cache.transaction; import java.net.InetAddress; import java.net.UnknownHostException; import org.springframework.beans.factory.InitializingBean; import com.easyooo.framework.common.net.InetAddressUtil; import com.easyooo.framework.common.net.ProcessUtil; /** * Client Id 生成器, 确保所有JVM进程的唯一性 * * @author Killer */ public class ClientIdGenerator implements InitializingBean{ public static String clientId; /** * 获取当前IP地址及进程号 * @return */ protected String genClientId()throws UnknownHostException{ InetAddress addr = InetAddressUtil.getLocalHostLANAddress(); String ip = addr.getHostAddress(); Integer pid = ProcessUtil.getCurrentPid(); return ip + "@" + pid; } @Override public void afterPropertiesSet() throws Exception { if(clientId == null){ clientId = genClientId(); } } /** * 如果在获取不到当前机器IP及进程号的情况下,则需要配置该属性,来确保当前JVM进程的唯一性 */ public void setClientId(String customClientId) { if(ClientIdGenerator.clientId == null){ ClientIdGenerator.clientId = customClientId; } } public static String getClientId(){ return clientId; } }