Variables Globales en Clases Singleton
Bueno, evidente es un error utilizar variables globales en clases singleton, ya que nos quedamos sin multi-thread.
Me explico. Si utilizamos una única instancia de una clase y tenemos a dos usuarios accediendo simultáneamente (dos threads o hilos), uno puede cargar/grabar los datos del otro de las variables globales.
Únicamente deberían de ser globales dentro de una clase singleton las constantes y otras clases que sean a su vez singleton.
public class DatosProyectoAction extends FormularioAction {
private DatosProyectoBO datosProyectoBO;
private SolicitudBO solicitudBO;
private DatosProyecto datosProyecto;
protected void cargarDatosFormulario (ActionForm form, HttpServletRequest request) {
…
}
protected void guardarDatosFormulario (ActionForm form, HttpServletRequest request) {
…
}
protected void cargarDatosCombos(HttpServletRequest request) {
…
}
protected Validacion getValidacion(ActionErrors errores) {
…
}
//Getters y Setters
…
}
En este ejemplo, la clase extiende de una clase que extiende de un Action (Struts los maneja como singletons), los objetos de negocio (BO) son singletons, por lo cual es correcto utilizarlos de forma global. Pero el bean datosProyecto es local, se debe de crear y destruir cada vez que se ejecuta cualquier método!!!!
VACACIONES !!!!!!!
[tags]j2ee, diseño software[/tags]
También te puede interesar:
- Patrones de Diseño – Singleton El Patrón de Diseño Singleton (en español, Instancia Única) se utiliza para garantizar que una clase sólo tenga una única instancia y para facilitar un...
- [Struts] – ActionDispatcher Struts permite manejar eventos HTML, mediante la clase ActionDispatcher, LookupDispachAciton y MappingDispatchAction que encontramos en el paquete org.apache.struts.actions. En la clase Action declaramos un ActionDipatcher...
- Implementación con Struts : Cambio de Contraseña Planteamiento Necesitamos implementar en una aplicación web basada en Struts un cambio de contraseña de los usuarios de la aplicación. El usuario al olvidar su...
- Orden de carga de clases/librerías en TOMCAT Lo primero, decir que lo simple es bello (y más fácil de mantener cuando se va el que lo ha montado). Todos los que llevamos...
- Variables en procedimientos de SQL (sentencias DECLARE, SET) Se puede ampliar la información al respecto en IBM. – declarar variables declare @id numeric(19,0) – para asignar valores a vabiables set @id=1 select...






























