Mover elementos dentro de un Map

damianr
12 de Agosto del 2005
Saludos a todos...

Estamos diseñando una aplicación J2EE con un servidor de aplicaciones que no soporta el cambio en caliente de clases. Para "evitar" esta limitación del servidor se nos ocurrió cargar los Beans, Servicios, Objetos con reglas de negocio en clases que contengan estos objetos (las cuales van a quedar registradas a nivel de aplicación al momento de acceder a la aplicación) y el código fuente los vaya solicitando a medida que los necesita. Con este enfoque logro varias cosas:

1. Desaclopar las implementaciones del código fuente que los va a utilizar (ya que las reglas de negocio, beans y/o servicios implementan ciertas interfaces).
2. Poder cambiar facilmente que objetos va a contener cada clase Map por medio de un archivo .properties o XML.
3. Poder "inyectar" más lógica o servicios o mapeo de datos al Map en tiempo de ejecución.

El problema que se me presenta es cuando algún Thread ya a obtenido (en alguna parte del código) la referencia a un objeto que, por ejemplo, contenga una regla de negocio a modificar. La idea sería ir al Map que contiene dicha regla de negocio erronea y setear el nuevo objeto relacionado a una key particular. Esto está bien salvo que aquellos Thread que ya tengan una referencia de la vieja regla de negocio van a sufrir un NullPointerException (cosa que en una aplicación 7x24 no es aceptable).

La pregunta del millón es: ¿Conoce alguien algún algoritmo o implementación de Map o paquete que me permita "mover" un elemento - para no destruir la instancia - en vez de pisar el mismo al setear uno nuevo bajo la misma key?

Espero que se entienda. Desde ya muchas gracias a aquellos que puedan aportar alguna idea.

Damián Ríos
Argentina