[AIX HP-UX Linux Solaris Windows]

Beispiel: Standardadvisor implementieren

Das folgende Beispiel veranschaulicht, wie ein angepasster Standardadvisor verwendet wird.

Dieser Beispielquellcode gleicht dem Standardadvisor HTTP für Load Balancer. Er funktioniert wie folgt:
  1. Eine Sendeanforderung (Befehl "HEAD/HTTP") wird abgesetzt.
  2. Eine Antwort wird empfangen. Die Informationen werden nicht analysiert, aber die Antwort bewirkt, dass die Methode getLoad beendet wird.
  3. Die Methode "getLoad" gibt 0 für Erfolg oder -1 für einen Fehler zurück.

Dieser Advisor arbeitet im normalen Modus. Die Lastmessung basiert somit auf der abgelaufenen Zeit (in Millisekunden), die für das Öffnen des Sockets, das Senden, das Empfangen und das Schließen des Sockets benötigt wurde.

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

  //-------- 
  // Konstruktor
      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;                                  // normalerweise eine leere Routine
    } 

  //-------- 
  // getLoad

      public int getLoad(int iConnectTime, ADV_Thread caller) {
      	int iRc;
          int iLoad = ADV_HOST_INACCESSIBLE;       // initialisieren auf inaccessible (kein Zugriff)
      
          iRc = caller.send(ADV_SEND_REQUEST);     // HTTP-Anforderung an den
                                                                                                // Server senden
          if (0 <= iRc) {                          // wenn das Senden erfolgreich war
              StringBuffer sbReceiveData = new StringBuffer("");   // Puffer für die
                                                                                                                           // Antwort zuordnen
            iRc = caller.receive(sbReceiveData);   // Ergebnis empfangen
      
            // Ergebnis analysieren, falls erforderlich

            if (0 <= iRc) {          // wenn der Empfang erfolgreich war
                iLoad = 0;             // 0 für Erfolg zurückgeben
            }                        // (Lastwert des Advisors wird im
    }                          //  normalen Modus vom Basiscode ignoriert)
    	return iLoad;
  } 
} 



Zugehörige Verweise
Beispiel: Beispieladvisor
Referenzartikel Referenzartikel    

Nutzungsbedingungen | Feedback

last-updated-altLetzte Aktualisierung: Jul 5, 2011 11:00:34 AM EDT
Dateiname: rprf_advexstand.html