Sistema de Nombrado en Java (JNDI) [Parte I]

Una factor�a de objetos implementa los interfaces ObjectFactory o DirObjectFactory.

ObjectFactory tiene un m�todo: getObjectInstance().

public Object getObjectInstance(
	Object info, 
	Name name, 
	Context nameCtx,
	Hashtable environment) 
	throws Exception;

DirObjectFactory es un subinterface de ObjectFactory y declara un m�todo adicional: getObjectInstance().

public Object getObjectInstance(
	Object info, 
	Name name, 
	Context nameCtx,
	Hashtable environment,
	Attributes attrs) 
	throws Exception;

Este m�todo acepta como argumentos informaci�n sobre el objeto (info) y el nombre del objeto (name) en relaci�n al contexto (nameCtx) en el que est� unido. El argumento env son las propiedades de entorno para el contexto que est� usando la factor�a de objetos. La versi�n DirObjectFactory del m�todo acepta un argumento adicional attrs (Attributes), que contiene (alguno o todos) los atributos asociados con obj.

.�ObjectFactory contra DirObjectFactory

Deber�amos usar un ObjectFactory con un contexto que implementa s�lo el interface Context.

Usaremos un DirObjectFactory con un contexto que implementa el interface DirContext.

Por ejemplo, un proveedor de servicio de nombres COS s�lo implementa el interface Context. Como los Attributes no son relevantes en este escenario, s�lo el getObjectInstance() definido en el interface ObjectFactory es relevante para este proveedor de servicios. Por el contrario, un proveedor de servicios LDAP normalmente implementa el interface DirContext y usar� getObjectInstance() seg�n lo definido en el interface DirObjectFactory. El par�metro Attributes lo usa el proveedor de servicios para pasar cualquier atributo asociado con info a la factor�a para que �sta no tenga que localizarlos por s� misma. Por ejemplo, cuando un proveedor de servicio hace una Context.lookup(), puede pasar a getObjectInstance() cualquier atributo que lea desde el servidor sobre el objeto que est� siendo buscando.

.�Accesibilidad

La clase de la factor�a de objetos no s�lo debe implementar el interface ObjectFactory/DirObjectFactory y proporcionar una implementaci�n de getObjectInstance().

Tambi�n debe ser p�blica y debe tener un constructor p�blico que no acepte argumentos.

.�Descripci�n del Trabajo

Normalmente, una factor�a de objetos es bastanse sencilla y peque�a. Su papel principal es recolectar la informaci�n necesaria para crear un ejemplar de la clase del objeto deseado y luego llamar al constructor de la clase. Sin embargo, la complejidad de los objetos que crea puede variar significativamente.

Por ejemplo, los ejemplos de factor�as de ejemplos dadas en esta lecci�n son bastante triviales; los objetos que crean tambi�n son triviales. Por el contrario, una factor�a de ojetos LDAP crea un contexto LDAP, que crea y maneja conexiones a un servidor LDAP. En este caso, una factor�a de objetos relativamente simple crea un objeto muy complejo.

En general, la informaci�n que usa una factor�a de objetos para crear objetos sale del directorio. Consecuentemente, existe una estrecha relaci�n entre la representaci�n de los objetos almacenados en el directorio y la factor�a de objetos que crea los objetos usando esta informaci�n. Por ejemplo, si el objeto est� representado como una conjunto de atributos en el directorio, entonces la factor�a de objetos correspondiente debe saber extraer la informaci�n desde esos atributos para crear el objeto.

.�Si todo esto Falla

Una factor�a de objetos normalmente es muy especifica sin importar los tipos de transformaciones que manejar�. De echo, en muchos casos, como se explic� en la secci�n Interacci�n entre Factor�as de Objetos y Proveedores de Servicios, el JNDI le pedir� a una factor�a de objetos que intente crear un ejemplar de un objeto que fue pensado para otra factor�a de objetos. Un s�lo proveedor de servicios normalmente usa varias factor�as de objetos. Por lo tanto si una factor�a de objetos encuentra que no puede crear un objeto bas�ndose en los argumentos suministrados, deber�a devolver null.

S�lo si la factor�a de objetos sabe con seguridad que est� pensada para crear el objeto, pero no puede, deber�a lanzar una excepci�n. Lanzar una excepci�n evita que otras factor�as de objetos lo intenten.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO