Il seguente esempio mostra come utilizzare un advisor personalizzato standard.
Questo advisor funziona in modalità normale, pertanto la misurazione del carico si basa sul tempo trascorso (espresso in millisecondi) richiesto per eseguire le operazioni di apertura socket, di invio, di ricezione e chiusura.
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; // di solito una routine vuota } //-------- // getLoad public int getLoad(int iConnectTime, ADV_Thread caller) { int iRc; int iLoad = ADV_HOST_INACCESSIBLE; // initializzazione su inaccessibile iRc = caller.send(ADV_SEND_REQUEST); // inviare la richiesta HTTP al // server if (0 <= iRc) { // se l'invio riesce StringBuffer sbReceiveData = new StringBuffer(""); // si assegna un buffer // per la risposta iRc = caller.receive(sbReceiveData); // viene ricevuto il risultato // parse the result here if you need to if (0 <= iRc) { // se la ricezione riesce iLoad = 0; // viene restituito 0 } // (il valore di carico dell'advisor viene ignorato } // dalla base in modalità normale) return iLoad; } }