Menú Curso Java EJB's : Utilización del Patrón de Diseño Fábrica de Interfases ("Home Factory")

(Anterior) Patrones de Diseño

La siguiente clase es utilizada al implementar el patrón de diseño Fábrica de Interfases ("Home Factory").

Clase FabricaEJB


import javax.ejb.*;
import java.rmi.*;
import java.util.*;
import javax.naming.*;

 
public class FabricaEJB
{
    private Map mapaFabricas;
    private static FabricaEJB unaFabrica;

    Context ctx;

    private FabricaEJB() throws NamingException 
    {
        // Incializar Contexto 
        ctx = new InitialContext();
        this.mapaFabricas = Collections.synchronizedMap(new HashMap());    
    }

 
    public static FabricaEJB getFabrica() throws NamingException
    {
        if ( FabricaEJB.unaFabrica == null )
        {
            FabricaEJB.unaFabrica = new FabricaEJB();
        }
        return FabricaEJB.unaFabrica;
	}
    public EJBHome localizarHome(Class homeClass) throws NamingException
    {
        EJBHome elEJBHome = (EJBHome) this.mapaFabricas.get(homeClass);

        if(elEJBHome == null)
        {
            elEJBHome = (EJBHome) javax.rmi.PortableRemoteObject.narrow (           
            ctx.lookup (homeClass.getName()), homeClass);
		 this.mapaFabricas.put(homeClass, elEJBHome);
        }
        return elEJBHome;		
    }


}

A través de esta fabrica es posible realizar la búsqueda de cualquier EJB ("Home Interface") utilizando el siguiente fragmento:


CuentaBancariaHome home =     
(CuentaBancariaHome)FabricaEJB.getFabrica().localizarHome(AccountHome.class);

Nótese que la búsqueda se realiza directamente hacia el "Home Interface" utilizando la terminación class, la primer búsqueda realizada por cualquier "Home Interface" será guardada en un "Hashmap", si posteriormente se reutiliza este "Home Factory" se retornará una copia del "Hashmap" evitando una nueva búsqueda sobre el "Home Interface".

Terminos Legales de Contenido ©2000-2011 Osmosis Latina

Diseñado bajo estándares : XHTML   CSS  

webmaster@osmosislatina.com