WebSphere Load Balancer para IPv4 e IPv6
             Sistema operativos: AIX, HP-UX, Linux, Solaris, Windows

             Personalice la tabla de contenidos y los resultados de la búsqueda

Ejemplo: implementación de un asesor en la corriente

En el ejemplo siguiente se muestra cómo se implementa un asesor en la corriente. En este ejemplo se muestra la supresión del socket estándar que la base del asesor ha abierto. En su lugar, el asesor abre un socket Java en la corriente para consultar un servidor. Este procedimiento puede resultar de utilidad para los servidores que utilizan un puerto distinto del tráfico de cliente normal para realizar la escucha de una consulta del asesor.

En este ejemplo, un servidor está a la escucha en el puerto 11999 y cuando se le consulta devuelve un valor de carga con un entero hexadecimal "4". Este ejemplo se ejecuta en modalidad de sustitución, es decir, el último parámetro del constructor del asesor se establece en true y el código base del asesor utiliza el valor de carga devuelto en lugar del tiempo transcurrido.

Observe la llamada a supressBaseOpeningSocket() en la rutina de inicialización. No es necesario suprimir el socket base cuando no se van a enviar datos. Por ejemplo, quizá desee abrir el socket para asegurarse de que el asesor se puede poner en contacto con el servidor. Examine las necesidades de la aplicación cuidadosamente antes de hacer esta elección.

package CustomAdvisors;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.Date;
import com.ibm.internet.lb.advisors.*;
import com.ibm.internet.lb.common.*;
import com.ibm.internet.lb.server.SRV_ConfigServer; 

public class ADV_sidea extends ADV_Base implements ADV_MethodInterface {
  static final String ADV_NAME = "sidea";
  static final int ADV_DEF_ADV_ON_PORT = 12345;
  static final int ADV_DEF_INTERVAL = 7; 

  // crear una matriz de bytes con el mensaje de petición de carga
  static final byte[] abHealth = {(byte)0x00, (byte)0x00, (byte)0x00,
                                  (byte)0x04}; 

  public ADV_sidea() {
    super(ADV_NAME, "3.0.0.0-03.31.00", ADV_DEF_ADV_ON_PORT,
          ADV_DEF_INTERVAL, "",
          true);                     // el parámetro de modalidad de sustitución es true
    super.setAdvisor( this );
  } 

//--------
// ADV_AdvisorInitialize
  public void ADV_AdvisorInitialize()
  {
    suppressBaseOpeningSocket();        // indicar al código base que no abra el
                                        // socket estándar
    return;
  } 

//--------
// getLoad
  public int getLoad(int iConnectTime, ADV_Thread caller) {
    int iRc;
    int iLoad = ADV_HOST_INACCESSIBLE;    // -1
    int iControlPort = 11999;             // port on which to communicate
                                          // with the server
    String sServer = caller.getCurrentServerId(); // address of server to query
    try {
      socket soServer = new Socket(sServer, iControlPort);   // open socket to
                                                             // server
      DataInputStream disServer = new DataInputStream(
                                                      soServer.getInputStream());
      DataOutputStream dosServer = new DataOutputStream(
                                                      soServer.getOutputStream());
      int iRecvTimeout = 10000;           // set timeout (in milliseconds)
                                          // for receiving data
      soServer.setSoTimeout(iRecvTimeout);
      dosServer.writeInt(4);              // enviar un mensaje al servidor
      dosServer.flush();
      iLoad = disServer.readByte();       // recibir la respuesta del servidor 

    } catch (exception e) {
      system.out.println("Caught exception " + e);
    }
    return iLoad;                         // devolver la carga notificada del servidor
  }
}



Referencia relacionada
Ejemplo: asesor de ejemplo
Tema de referencia    

Condiciones de uso | Comentarios

Última actualización: 31 de julio de 2008, 3:18:06 PM EDT
http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.edge.doc/lb/info/ae/rprf_advexss.html