En el ejemplo siguiente se muestra cómo utilizar un asesor personalizado estándar.
Este asesor opera en modalidad normal, de modo que la medida de carga se basa en el tiempo transcurrido en milisegundos necesario para efectuar las operaciones de apertura, envío, recepción y cierre del 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; // habitualmente una rutina vacía } //-------- // getLoad public int getLoad(int iConnectTime, ADV_Thread caller) { int iRc; int iLoad = ADV_HOST_INACCESSIBLE; // inicializar en inaccesible iRc = caller.send(ADV_SEND_REQUEST); // enviar la petición 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 lo necesita if (0 <= iRc) { // si la recepción ha sido satisfactoria iLoad = 0; // devuelve 0 para la operación correcta } // (la base pasa por alto el valor de carga del asesor } // en modalidad normal) return iLoad; } }