WebSphere Load Balancer pour IPv4 et IPv6
Systèmes d'exploitation : AIX, HP-UX, Linux, Solaris, Windows

             Personnalisation de la table des matières et des résultats de la recherche

Exemple : Implémentation d'un conseiller de flux latéral

L'exemple ci-après illustre l'implémentation d'un conseiller de flux latéral. Il illustre la suppression du socket standard ouvert par la base du conseiller. A la place, ce conseiller ouvre un socket Java de flux latéral pour interroger un serveur. Cette procédure peut être utile pour les serveurs qui utilisent un autre port du trafic client normal pour écouter une requête de conseiller.

Dans cet exemple, un serveur écoute sur le port 11999 et, lorsqu'il est interrogé, renvoie une valeur de charge avec l'entier hexadécimal "4". Cet exemple est exécuté en mode remplacement (le dernier paramètre du constructeur du conseiller a la valeur true) et le code de base du conseiller utilise la valeur de charge renvoyée à la place du délai écoulé.

Notez l'appel de supressBaseOpeningSocket() dans la routine d'initialisation. La suppression du socket de base lorsqu'aucune donnée n'est envoyée n'est pas requise. Par exemple, vous pouvez ouvrir le socket pour vous assurer que le conseiller peut contacter le serveur. Examinez avec soin les besoins de votre application avant d'opter pour cette solution.

package CustomAdvisors; 
import java.io.*; 
import java.net.*; 
import java.util.*; 
import java.util.Date; 
import com.ibm.internet.lb.advisors.*; 
import com.ibm.internet.lb.common.*; 
import com.ibm.internet.lb.server.SRV_ConfigServer; 

public class ADV_sidea extends ADV_Base implements ADV_MethodInterface { 
  static final String ADV_NAME = "sidea"; 
  static final int ADV_DEF_ADV_ON_PORT = 12345; 
  static final int ADV_DEF_INTERVAL = 7; 

  // create an array of bytes with the load request message 
  static final byte[] abHealth = {(byte)0x00, (byte)0x00, (byte)0x00,
                                  (byte)0x04}; 

  public ADV_sidea() { 
    super(ADV_NAME, "3.0.0.0-03.31.00", ADV_DEF_ADV_ON_PORT, 
          ADV_DEF_INTERVAL, "", 
          true);                     // replace mode parameter is true 
    super.setAdvisor( this ); 
  } 

//-------- 
// ADV_AdvisorInitialize 
  public void ADV_AdvisorInitialize() 
  { 
    suppressBaseOpeningSocket();        // tell base code not to open the 
                                        // standard socket 
    return; 
  } 

//-------- 
// getLoad 
  public int getLoad(int iConnectTime, ADV_Thread caller) { 
    int iRc; 
    int iLoad = ADV_HOST_INACCESSIBLE;    // -1 
    int iControlPort = 11999;             // port on which to communicate
                                          // with the server 
    String sServer = caller.getCurrentServerId(); // address of server to query 
    try { 
      socket soServer = new Socket(sServer, iControlPort);   // open socket to 
                                                             // server 
      DataInputStream disServer = new DataInputStream( 
                                                      soServer.getInputStream()); 
      DataOutputStream dosServer = new DataOutputStream( 
                                                      soServer.getOutputStream()); 
      int iRecvTimeout = 10000;           // set timeout (in milliseconds) 
                                          // for receiving data 
      soServer.setSoTimeout(iRecvTimeout); 
      dosServer.writeInt(4);              // send a message to the server 
      dosServer.flush(); 
      iLoad = disServer.readByte();       // receive the response from the server 

    } catch (exception e) { 
      system.out.println("Caught exception " + e); 
    } 
    return iLoad;                         // return the load reported from the server 
  } 
}



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

Conditions d'utilisation | Commentaires

Dernière mise à jour : 31 juillet 2008 3:18:06 PM EDT
http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.edge.doc/lb/info/ae/rprf_advexss.html