L'exemple ci-après montre comment utiliser un conseiller personnalisé standard.
Ce conseiller fonctionne en mode normal. Par conséquent, la mesure de la charge repose sur le délai en millisecondes nécessaire aux opérations d'ouverture, d'envoi, de réception et de fermeture du 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; // généralement une routine vide } //-------- // getLoad public int getLoad(int iConnectTime, ADV_Thread caller) { int iRc; int iLoad = ADV_HOST_INACCESSIBLE; // s'initialise sans accessibilité iRc = caller.send(ADV_SEND_REQUEST); // envoie la demande HTTP au // serveur if (0 <= iRc) { // si l'envoi aboutit, StringBuffer sbReceiveData = new StringBuffer(""); // alloue une mémoire tampon // à la réponse iRc = caller.receive(sbReceiveData); // reçoit le résultat // analysez le résultat ici, si nécessaire if (0 <= iRc) { // si la réception aboutit iLoad = 0; // retourne la valeur 0 } // (la valeur de charge du conseiller est ignorée } // par la base en mode normal) return iLoad; } }