WebSphere Load Balancer for IPv4 and IPv6
             Betriebssysteme: AIX, HP-UX, Linux, Solaris, Windows

             Inhaltsverzeichnis und Suchergebnisse personalisieren

Beispiel: Advisor-Funktion für Nebendatenströme

Das folgende Beispiel zeigt, wie eine Advisor-Funktion für Nebendatenströme implementiert werden kann. Das Beispiel veranschaulicht, wie der vom Advisor-Basiscode geöffnete Standard-Socket unterdrückt wird. Stattdessen öffnet diese Advisor-Funktion für die Abfrage eines Servers einen Java-Socket für Nebendatenströme. Diese Prozedur kann für Server hilfreich sein, die für eine Advisor-Abfrage einen anderen Port als für den normalen Clientdatenverkehr verwenden.

In diesem Beispiel ist ein Server an Port 11999 empfangsbereicht und gibt bei Abfrage einen Lastwert mit dem hexadezimalen Integer "4" zurück. Dieser Beispielcode wird im Ersetzungsmodus ausgeführt, d. h., der letzte Parameter des Advisor-Konstruktors wird auf "true" gesetzt, und der Advisor-Basiscode verwendet den zurückgegebenen Lastwert anstelle der abgelaufenen Zeit.

Beachten Sie den Aufruf von supressBaseOpeningSocket() in der Initialisierungsroutine. Eine Unterdrückung des Basis-Sockets ist nicht erforderlich, wenn keine Daten gesendet werden. Sie können den Socket beispielsweise öffnen, um sicherzustellen, dass die Advisor-Funktion eine Verbindung zum Server herstellen kann. Überprüfen Sie die Anforderungen Ihrer Anwendung sorgfältig, bevor Sie diese Auswahl treffen.

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);                     // Parameter für Ersetzungsmodus ist true
    super.setAdvisor( this );
  }

//--------
// ADV_AdvisorInitialize
  public void ADV_AdvisorInitialize()
  {
    suppressBaseOpeningSocket();        // Basiscode anweisen, den
                                        // Standard-Socket nicht zu öffnen
    return;
  }

//--------
// getLoad
  public int getLoad(int iConnectTime, ADV_Thread caller) {
    int iRc;
    int iLoad = ADV_HOST_INACCESSIBLE;    // -1
    int iControlPort = 11999;             // Port, über den mit dem Server
                                          // kommuniziert werden soll
    String sServer = caller.getCurrentServerId(); // Adresse des abzufragenden Servers
    try {
      socket soServer = new Socket(sServer, iControlPort);   // Socket zum Server
                                                             // öffnen
      DataInputStream disServer = new DataInputStream(
                                                      soServer.getInputStream());
      DataOutputStream dosServer = new DataOutputStream(
                                                      soServer.getOutputStream());
      int iRecvTimeout = 10000;           // Zeitlimit (in Millisekunden)
                                          // für den Empfang von Daten festlegen
      soServer.setSoTimeout(iRecvTimeout);
      dosServer.writeInt(4);              // Nachricht an den Server senden
      dosServer.flush();
      iLoad = disServer.readByte();       // Antwort vom Server empfangen

    } catch (exception e) {
      system.out.println("Caught exception " + e);
    }
    return iLoad;                         // Vom Server gemeldete Last zurückgeben
  }
}



Zugehörige Referenzen
Beispiel: Beispiel-Advisor-Funktion
Referenz    

Nutzungsbedingungen | Feedback

Letzte Aktualisierung: 31. Juli 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