package es.ejie.frmk.infraestructura.utilidades.configurador;

import es.ejie.frmk.control.excepciones.Q70FrameworkException;

/**
 * Interfaz que cumple ciertos componentes de Geremua, que son gobernados por MBeans.<br>
 * Cada MBean se encarga de gestionar, administrar un Componenente de Geremua mediante esta interfaz. 
 */
public interface Q70Administrable {

	/**
	 * Al invocar este metodo del Componente se inicializa. 
	 * 
	 * @throws Q70FrameworkException 
	 */
	public void inicializar() throws Q70FrameworkException;
	
	
	/**
	 * Método que se llama para activar el Componente de Geremua desbloqueandolo para ser usado.
	 */
	public void activar();
	
	/**
	 * Método que se llama para suspender el Componente de Geremua, bloqueando el acceso al mismo desde
	 * cualquier otro hilo de ejecucion que no sea el que invoco a este metodo.
	 * 
	 * @throws Q70FrameworkException 
	 */
	public void suspender() throws Q70FrameworkException;

	/**
	 * Método que se llama para liberar un componente, es decir, el Componente de Geremua elimina, limpia
	 * los recursos de memoria, conexiones, que necesitase.
	 * 
	 * @throws Q70FrameworkException  
	 */
	public void liberar() throws Q70FrameworkException;


	/**
	 * Método que se llama para destruir un componente eliminando su referencia y desasignando
	 * su espacio de memoria para que pueda ser utilizado por el sistema.
	 * 
	 * @throws Q70FrameworkException 
	 */
	public void destruir() throws Q70FrameworkException;
	
}
