package cn.org.rapid_framework.distributed.threadlocal;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
* 分布式 ThreadLocal, 存放在ThreadLocal中的数据可以传输至另外一台机器上
*
* @author badqiu
*
*/
public class DistributedThreadLocal {
/**
* 分布式ThreadLocal的ID
**/
public static String DISTRIBUTED_THREAD_LOCAL_ID = "DISTRIBUTED_THREAD_LOCAL_ID";
public static String DISTRIBUTED_THREAD_LOCAL_KEY_PREFIX = "tl_";
public static ThreadLocal<Map<String, String>> threadLocal = new ThreadLocal<Map<String, String>>();
public static void putAll(Map<String, String> map) {
getMap().putAll(map);
}
public static void put(String key, String value) {
getMap().put(key, value);
}
public static String get(String key) {
return (String) getMap().get(key);
}
public static Map<String, String> getMap() {
Map<String, String> map = threadLocal.get();
if (map == null) {
map = new HashMap<String, String>();
map.put(DISTRIBUTED_THREAD_LOCAL_ID, UUID.randomUUID().toString().replace("-", ""));
threadLocal.set(map);
}
return map;
}
public static void clear() {
threadLocal.set(null);
}
public static void onBeforeRemoteCall() {
}
public static void onReceivedDistributedThreadLocal(){
}
}