En el ejemplo siguiente se muestra cómo utilizar un asesor personalizado estándar.
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; } }