Ejemplo: implementación de asesores estándar

En el ejemplo siguiente se muestra cómo utilizar un asesor personalizado estándar.

Este código fuente de ejemplo es similar al asesor HTTP de Load Balancer estándar. Funciona de la manera siguiente:
  1. Se emite una petición de envío, un mandato "HEAD/HTTP".
  2. Se recibe una respuesta. La información no se analiza, pero la respuesta hace que el método getLoad termine.
  3. El método getLoad devuelve 0 para indicar que la operación se ha realizado con éxito o -1 para indicar un error.

El asesor funciona en modalidad normal, por lo que la medición de carga se basa en el tiempo transcurrido, en milisegundos, necesario para realizar las operaciones de apertura, envío, recepción y cierre de socket.

package CustomAdvisors; 
import com.ibm.internet.lb.advisors.*; 
public class ADV_sample extends ADV_Base implements ADV_MethodInterface {
  static final String ADV_NAME ="Sample";
  static final int ADV_DEF_ADV_ON_PORT = 80;
  static final int ADV_DEF_INTERVAL = 7;
  static final String ADV_SEND_REQUEST =
    "HEAD / HTTP/1.0\r\nAccept: */*\r\nUser-Agent: " + 
    "IBM_Load_Balancer_HTTP_Advisor\r\n\r\n";

  //-------- 
  // Constructor
    public ADV_sample() { 
      super(ADV_NAME, "3.0.0.0-03.31.00", 
            ADV_DEF_ADV_ON_PORT, ADV_DEF_INTERVAL, "", 
            false); 
      super.setAdvisor( this );
   } 

  //-------- 
  // ADV_AdvisorInitialize
    public void ADV_AdvisorInitialize() { 
      return;                               // normalmente es una rutina vacía 
    } 

  //-------- 
  // getLoad 

    public int getLoad(int iConnectTime, ADV_Thread caller) { 
      int iRc; 
      int iLoad = ADV_HOST_INACCESSIBLE;           // inicializar a inaccesible 
      
      iRc = caller.send(ADV_SEND_REQUEST);         // enviar solicitud HTTP 
                                                   // al servidor 
      if (0 <= iRc) {                              // si el envío es satisfactorio,
        StringBuffer sbReceiveData = new StringBuffer("");      // asignar un almacenamiento intermedio 
                                                                // para la respuesta 
      iRc = caller.receive(sbReceiveData);         // recibir el resultado 
      
      // analizar el resultado aquí si es necesario 

      if (0 <= iRc) {                              // si la recepción es satisfactoria 
        iLoad = 0;                                 // devolver 0 para resultado correcto 
      }                                            // (se omite el valor de carga del asesor por 
    }                                              // base en modalidad normal) 
    return iLoad; 
  } 
} 
Reference topic    

Terms and conditions for information centers | Feedback

Last updated: May 23, 2013 03:57 PM EDT
File name: rprf_advexstand.html