package org.quickbundle.project.listener; import java.util.HashMap; import java.util.Map; public class RmGlobalMonitor { /** * 全局唯一的UUID, * 产生时机: request(表示一次请求)进入,或栈顶的Service(表示一次事务)进入 * 销毁时机: Request结束,或Service结束 */ public static final ThreadLocal<String> uniqueUUID = new ThreadLocal<String>(); /** * 单事务产生的UUID, * 产生时机: Connection.setAutoCommit(true) * 销毁时机: Connection.commit() */ public static final ThreadLocal<Map<String, String>> transactionUUID = new ThreadLocal<Map<String, String>>(); static String formatUUID(String uuid) { if(uuid == null) { return ""; } else { return uuid.replaceAll("-", ""); } } /** * 返回uniqueUUID,如果是null返回"" */ public static String getShortUniqueUUID() { return formatUUID(uniqueUUID.get()); } /** * */ public static void putTransactionUUID(String conn, String uuid) { if(transactionUUID.get() == null) { transactionUUID.set(new HashMap<String, String>()); } transactionUUID.get().put(conn, uuid); } public static void removeTransactionUUID(String conn) { if(transactionUUID.get() != null) { transactionUUID.get().remove(conn); } } /** * 返回transactionUUID,如果是null返回"" */ public static String getShortTransactionUUID(String conn) { if(conn == null || transactionUUID.get() == null) { return ""; } return formatUUID(transactionUUID.get().get(conn)); } }