Dios no juega a los dados
Albert Einstein

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:

Dejanos tu Comentario

Nombre: (Requerido)

E-Mail: (Requerido)

Sitio WEB:

Comentario:

Comenta