|
A veces se desea compartir informacion entre dos objetos que estan muy lejanos en estructura. Esto normalmente es una falla de diseño pero a veces se requiere un parche rápido.
Esta clase da soporte a colocar propiedades de runtime en la maquina de java de manera que puedan ser accedidas por otros procesos.
Lo he usado exitosamente en la comunicacion Servlet-JSP-TAG-Beans para pasar referencias a objetos que deben usarse tardíamente.
Listado 1: Uso
// servlet...
DataBase db = ...;
ThreadVars.putAttribute("dataBase", db);
// java bean
DataBase db = (DataBase) ThreadVars.getAttribute("dataBase");
Listado 2: ThreadVars.java
import java.util.Hashtable;
public class ThreadVars {
static Hashtable threads= new Hashtable();
public static void putAttribute(Object key, Object value) {
Thread t = Thread.currentThread();
Hashtable h = (Hashtable) threads.get(t);
if (h==null){
h = new Hashtable();
threads.put(t,h);
}
h.put(key,value);
}
public static Object getAttribute(Object key){
Thread t = Thread.currentThread();
Hashtable h = (Hashtable) threads.get(t);
if (h!=null)
return h.get(key);
return null;
}
}
|