WebSphere Extended Deployment, Version 6.0.x     Sistemas operativos: AIX, HP-UX, Linux, Solaris, Windows, z/OS

PartitionManager

PartitionManager

La aplicación puede obtener de JNDI una instancia de PartitionManager. Una instancia está enlazada a JNDI mediante el tiempo de ejecución. El siguiente segmento de código muestra cómo el bean de sesión sin estado particionado (PSSB) puede buscar una instancia y a continuación colocarla en antememoria mediante una variable de instancia.
public void setSessionContext(javax.ejb.SessionContext ctx) {
	mySessionCtx = ctx;
	try
	{
		// colocar en antememoria varias referencias.
		InitialContext ic = new InitialContext();
		bookHome = (PartitionManager)ic.lookup(PartitionManager.JNDI_NAME);
	}
	catch(Exception e)
	{
		throw new EJBException(e);
	}
}

Consulte los ejemplos de programadores para obtener más ejemplos de uso.

PartitionManager#JNDI_NAME

Una aplicación puede utilizar el atributo JNDI_NAME para recuperar el servicio PartitionManager mediante JNDI.

PartitionManager#createPartitionDefinition

Este método tiene tres signaturas y cada una se utiliza para crear una instancia de PartitionDefinition que representa una partición de la aplicación. Este método se sobrecarga y se debe escoger el método adecuado según el comportamiento deseado.

La primera signatura de método es:

PartitionDefinition createPartitionDefinition(String partitionName)

Se crea una PartitionDefinition con el ámbito de clúster y la clasificación por omisión. La serie de clasificación por omisión es el valor de PartitionDefinition#DEFAULT_CLASSIFICATION (_DFLT). Esta versión no puede crear una clasificación única por partición, especificar las particiones con ámbito de nodo o proporcionar una correlación para gestionar mejor las particiones.
La segunda signatura de método es:

PartitionDefinition createPartitionDefinition(String partitionName,
String partitionClass,
PartitionScope scope)

Se crea una PartitionDefinition con la clasificación de partición especificada (partitionClass) y un ámbito de partición determinado. Esta versión no proporciona una correlación de atributos de política para crear la definición de partición. Si se proporciona una correlación de atributos de política adicionales, se pueden ofrecer mejores opciones de gestión de particiones.
La signatura de método es:

PartitionDefinition createPartitionDefinition(String partitionName,
String partitionClass,
PartitionScope scope,
Map attributemap)

Se crea una PartitionDefinition con la clasificación de partición especificada (partitionClass) y un ámbito de partición determinado. Asimismo, se puede añadir un conjunto de pares de atributo y valor a la lista de propiedades de grupo de HA Manager para esta partición. Se pueden utilizar atributos adicionales para controlar las políticas de HA Manager de modo más específico. Los atributos de correlación están en uso durante la ejecución. Por lo tanto, es importante minimizar el número de atributos y los datos reales en uso.

El primer valor insertado en la API map put() es la clave de HA Manager, el segundo será el valor de HA Manager para ese par de claves.

Un ejemplo al utilizar el parámetro de correlación se puede implementar de un modo parecido al siguiente:
public PartitionDefinition[] getPartitions()
{	
 String names = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 PartitionDefinition[] rc = new PartitionDefinition[names.length()];
	for(int i = 0; i < names.length(); ++i)
	{
  	Map testMap = new HashMap();
		testMap.put(“custom-attrib", "samplevalue");			
		testMap.put("activateOn", Integer.toString(i%3)); // tener 3 servidores,
equilibrar durante el inicio
		rc[i] = ivRuntime.createPartitionDefinition(names.substring(i, i + 1),
								       "MapExamle",
								       PartitionScope.K_NODE, 
                        testMap);
			testMap = null;

		}
		logger.trace(RASITraceEvent.TYPE_LEVEL1, this, "getPartitions", 
"Returning partitions", rc);
		return rc;
	}

En este caso, se ha creado una correlación con un atributo de clave de HA Manager establecido en el mismo valor para todas las particiones (custom-attrib) y un segundo con el nombre activateOn y un valor de serie 0-2. Este ejemplo se ha utilizado junto el soporte de políticas para crear una política para todos los valores de inicio y solicitar a la política de servidor preferida que sea exclusiva en el caso de todas las particiones terceras. Consulte las secciones sobre políticas para obtener más información sobre este enfoque.

createPartitionDefinition() Attribute Constraints

Los atributos proporcionados a la API createPartitionDefinition() deben cumplir con las siguientes normas, de lo contrario, durante la operación create se generará una excepción de error de HA Manager HAMapException y no se creará correctamente la partición. No sólo se aplican a los pares de clave y valor del atributo de correlación, sino también al nombre de partición y clasificación. En este caso proporcionará a los valores para Partitioning Facility (WPF) los valores de clave por omisión –pn y –pc, respectivamente.
  • La correlación no puede ser nula o estar vacía. WPF garantiza que esto no ocurra, ya que WPF proporciona valores de correlación por omisión que incluyen el nombre de partición, clasificación por omisión y otros atributos documentados en la sección de la política de HA Manager de modo que esta norma puede ignorarse.
  • Todas las claves de la correlación deben ser Strings.
  • Todos los valores de la correlación deben ser Strings.
  • Ninguna clave debe empezar con el carácter de subrayado ('_').
  • Ninguna clave ni valor puede contener el carácter de coma (',').
  • Ninguna clave ni valor puede contener el carácter de igual ('=').
  • Ninguna clave ni valor puede contener el carácter de barra vertical ('|').

PartitionManager#getPartitions

Se puede llamar a este método para obtener una lista de las particiones conocidas de este miembro de cluster. La signatura de método es:

String[] getPartitions()

PartitionManager#getApplicationName

Se puede llamar a este método para obtener el nombre de aplicación determinado por el administrador durante el tiempo de despliegue. Esta serie de puede utilizar en el nombre de la partición para garantizar que sea exclusivo dentro del clúster (el nombre de la aplicación desplegada debe ser exclusivo dentro de un clúster Websphere).

La signatura de método es:

String getApplicationName()

Si ésta se utiliza al crear una partición, sugerimos que despliegue la aplicación J2EE particionada con un nombre mínimo en términos de la longitud de serie, ya que el nombre se utiliza durante todo el tiempo de ejecución de HA manager.

Un uso común puede ser utilizarla para crear versiones de las referencias de partición que tengan la misma aplicación J2EE particionada en el mismo clúster simplemente instalada con un nombre distinto, y cada partición como, por ejemplo, PartitionA puede llamarse Appv2r2.PartitionA. De este modo, el usuario podría tener Appv2r1.PartitionA y Appv2r2.PartitionAh activas simultáneamente. La aplicación entonces simplemente dirigiría sus peticiones a la versión con las que son compatibles. Este es uno de los enfoques para solucionar este problema.

PartitionManager#addPartition

Una aplicación llama a este método para añadir dinámicamente una partición nueva. La signatura de método es:

void addPartition(PartitionDefinition name)

Si un miembro de clúster añade una partición, se añade automáticamente a todos los miembros de modo asíncrono. Al utilizar la política con ámbito de clúster por omisión, la partición se activará generalmente en el miembro de clúster que reciba la petición, aunque no se garantiza este comportamiento. Asimismo, la activación de una partición en todo un clúster es una función distribuida, de modo que un retraso es razonable entre el momento en que se devuelve la API y el momento en que ocurre la activación real de la partición. Los programadores deben tenerlo en cuenta.

Se ofrece una demostración de esta API en el ejemplo de WPFKeyBasedPartition.

PartitionManager#removePartition

Este método permite que una aplicación elimine una partición dinámicamente. Si la partición está activa en ese momento en cualquier miembro de clúster, también se desactiva. La partición se elimina de todos miembros de clúster en línea.

La signatura de método es:

void removePartition(String name)

La desactivación de una partición en todo un clúster es una función distribuida, de modo que un retraso es razonable entre el momento en que se devuelve la API y el momento en que ocurre la desactivación real de la partición. Los programadores deben tenerlo en cuenta.

Para casos en que se sospecha de un error temporal en lugar de uno permanente, el programador debería considerar utilizar la API de disablePartition(). Es este caso, el mecanismo de política se puede utilizar para determinar si la partición no se debe reiniciar o si, de hecho, puede reiniciarse en otro miembro de clúster si se da el caso.

PartitionManager#disablePartition

Inhabilita dinámicamente una partición. La llamada a este método inhabilita la partición en los miembros de clúster actuales. También puede realizarse mediante el mandato wpfadmin.

La signatura de método es:

void removePartition(String name)

Cuando se invoca el método, la partición entrará en un estado desactivado o se activará inmediatamente en otro miembro de clúster capaz de albergar la partición. La partición se desactiva según los valores de política actuales, aunque por omisión se activa en otro miembro de clúster si hay alguno disponible. Si la partición no vuelve a activarse automáticamente, se puede utilizar wpfadmin para habilitar el miembro una vez que el administrador haya revisado las anotaciones cronológicas y determinado si es necesaria alguna acción anterior a volver a habilitar la partición.

No se llama a partitionUnloadEvent(...), ya que la aplicación llama a este método y puede limpiar tanto como sea posible antes de la invocación.

PartitionManager#reportPartitionFault

La aplicación llama a este método para indicar un problema con una partición activa. Esto hace que HA Manager reaccione de acuerdo con el valor del parámetro de gravedad. Este método se reserva para un uso futuro y no se implemente en este momento. Consulte disablePartition() para corregir el problema.

PartitionManager#reportTransactionComplete

Una aplicación llama a este método para notificar que se ha completado una transacción con un tiempo de respuesta específico para una partición determinada. Este método se utiliza generalmente cuando la aplicación utiliza un método asíncrono para recibir peticiones de trabajo en lugar de peticiones IIOP síncronos.

La signatura de método es:

void reportTransactionComplete(String partitionName, long responseTime_ms)

Este resultado de la API se almacena y se transfiere al recurso de supervisión de rendimiento de WPF. El recurso de supervisión de rendimiento de WPF rastreará los resultados individuales en todo el clúster. Este servicio se describe en diversas partes de este documento y se incluyen ejemplos en la sección de guía de iniciación.

Se ofrece una demostración de esta API en el ejemplo WPFKeyBasedPartitionSample.

PartitionManager#setHttpPartitionManager

Esté método indica a WPF que la aplicación utiliza la partición HTTP. Consulte la sección sobre la partición de este documento. La signatura de método es:

void setHttpPartitionManager(HttpPartitionManagerInterface manager)

PartitionManager# reportTransactionComplete

PMI WPF PMI contiene responseTime, una estadística que se utiliza para medir el tiempo de respuesta de las transacciones y el número de transacciones ejecutadas en nombre de una determinada partición. Las aplicaciones de usuario recopilan el tiempo de respuesta. Las aplicaciones de usuario actualizan las estadísticas de PMI llamando al método reportTransactionComplete de la interfaz com.ibm.websphere.wpf.PartitionManager.

A continuación aparece la signatura de método de la interfaz PartitionManager:
	/**
	 * Debe llamarse para informar al tiempo de ejecución cuando una
  * transacción/operación se completa en esta partición.
  * Se utiliza para registrar cuántas
	 * transacciones por segundo se ejecutan por partición.
	 * @param partitionName el nombre de la partición.
	 * @param responseTime_ms el tiempo de respuesta de la transacción.
	 * @throws IllegalStateException Si la aplicación que llama no tiene bean
  * manejador de partición
	 */	
   void reportTransactionComplete(String partitionName, long responseTime_ms)

Puede llamar a PartitionManager.reportTransactionComplete en el bean de sesión sin estado de particiones (PSSB). La mejor práctica es que los usuarios calculen el tiempo de transacción de una transacción y, a continuación, utilicen esta API para notificar el tiempo de transacción. A continuación aparece un ejemplo. El método buy es un método para simular la transacción en el Bean WPFKeyBasedPartition de la aplicación WPFKeyBasedPartitionSample.

/**
	 * El método buy. Este método no hace nada ahora excepto notificar el
  * final de la transacción. La transacción toma un valor aleatorio de
  * 0 a 1000 mseg.
	 * 
	 * @param partitionName
	 * @return nombre de partición
	 */
	public String buy(String partitionName) {
    String serverName = AdminServiceFactory.getAdminService().getNodeName()
+"/"+AdminServiceFactory.getAdminService().getProcessName();
    
		ivManager.reportTransactionComplete(partitionName, (long) 
(1000 * Math.random()));

		logger.trace(
			RASITraceEvent.TYPE_LEVEL1,
			this,
			"buy",
			"The method called at " + serverName + "." + partitionName);

		return "partiton=" + partitionName + ",server=" + serverName;
	}

La primera vez que se llama a PartitionManager.reportTransactionComplete para una determinada partición en un servidor de aplicaciones, se crea un módulo PMI para esta partición agrupada por el nombre de aplicación y el nombre EJB de sesión. Por ejemplo, si el nombre de la aplicación es app1 y el nombre del EJB de sesión es session1, el módulo PMI se agrupa mediante app1#session1. Obtendrá una descripción más detallada en la sección de la vía de acceso de PMI.

La estadística responseTime se ha diseñado para calcular algunas cuestiones estadísticas, por ejemplo, el tiempo de respuesta medio, el tiempo de respuesta mínimo, el tiempo de respuesta máximo y la suma de los cuadrados de los tiempos de respuesta. Los usuarios pueden acceder a estos datos, consultando los datos PMI mediante el mandato wpfadmin, wsadmin o MBean.




Related concepts
Modelo de programación de infraestructura de Partitioning Facility

Tema de referencia    

Condiciones de uso | Comentarios Última actualización: Mar 14, 2006 11:07:33 AM EST
http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r0/index.jsp?topic=?topic=/com.ibm.websphere.xd.doc/info/WPF51/rwpfPartitionManager.html

© Copyright IBM 2005, 2006. Reservados todos los derechos.
Este centro de información se ha realizado con tecnología de Eclipse. (http://www.eclipse.org)