[AIX HP-UX Linux Solaris Windows]

Exemple : Implémentation de conseillers standard

L'exemple ci-après montre comment utiliser un conseiller personnalisé standard.

Cet exemple de code source est similaire au conseiller HTTP standard de Load Balancer. Il fonctionne comme suit :
  1. Une demande d'envoi, une commande "HEAD/HTTP", est lancée.
  2. Une réponse est reçue. Les informations ne sont pas analysées, mais la réponse provoque la fin de l'exécution de la méthode getLoad.
  3. La méthode getLoad renvoie 0 en cas de succès ou -1 en cas d'échec.

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; 
  } 
} 



Référence associée
Exemple de conseiller
Rubrique de référence Rubrique de référence    

Conditions d'utilisation | Commentaires

Dernière mise à jourDernière mise à jour : Jun 21, 2011 12:02:44 PM EDT
Nom du fichier : rprf_advexstand.html