Methoden und Funktionsaufrufe angepasster Advisor

Verwenden Sie die folgenden Advisormethoden und Funktionsaufrufe in Ihren angepassten Advisor.

Beachten Sie, dass angepasste Advisor alle erforderlichen Routinen haben müssen. Advisor müssen die folgenden Basisklassenmethoden haben:

Konstruktor (bereitgestellt vom Advisorbasiscode)

public <Name_des_Advisors> {
          String sName;
          String sVersion;
          int iDefaultPort;
          int iInterval;
          String sDefaultLogFileName;
          boolean replace
) 
sName
Der Name des angepassten Advisors.
sVersion
Die Version der angepassten Advisors.
iDefaultPort
Die Nummer des Ports, über den die Verbindung zum Server hergestellt wird, wenn keine Portnummer im Aufruf angegeben ist.
iInterval
Das Intervall, in dem der Advisor die Server abfragt.
sDefaultLogFileName
Dieser Parameter ist erforderlich, wird aber nicht verwendet. Der einzige gültige Wert ist eine Nullzeichenfolge "".
replace
Gibt an, ob dieser Advisor im Ersetzungsmodus arbeitet. Folgende Werte sind gültig:
  • true – Die vom Advisorbasiscode berechnete Last durch den vom angepassten Advisor gemeldeten Wert ersetzen.
  • false – Den vom angepassten Advisor gemeldeten Lastwert zu dem vom Advisorbasiscode berechneten Lastwert addieren.

Methode "ADV_AdvisorInitialize()"

void ADV_AdvisorInitialize()

Diese Methode führt alle Initialisierungsoperationen durch, die für den angepassten Advisor erforderlich sind. Sie wird nach dem Start des Advisorbasismoduls aufgerufen. In vielen Fällen, z. B. bei den Standardadvisors wird diese Methode nicht verwendet, und ihr Code besteht aus einer einzigen Rückkehranweisung (return). Diese Methode kann verwendet werden, um die Methode suppressBaseOpeningSocket() aufzurufen, die nur in dieser Methode gültig ist.

In vielen Fällen (z. B. bei den Standardadvisor) wird diese Methode nicht verwendet, und ihr Code besteht aus einer einzigen Rückkehranweisung. Sie können diese Methode verwenden, um die Methode "suppressBaseOpeningSocket" aufzurufen, die nur in der Methode "ADV_AdvisorInitialize" gültig ist.

Methode "ADVLOG()"

Die Funktion ADVLOG ermöglicht einem angepassten Advisor, eine Textnachricht an die Basisprotokolldatei des Advisors zu schreiben. Das Format ist wie folgt:
void ADVLOG (int logLevel, String Nachricht) 
Dieser Befehl hat die folgenden Parameter:
logLevel
Die Statusstufe, auf der die Nachricht in die Protokolldatei geschrieben wird. Die Advisorprotokolldatei ist in Stufen organisiert: die dringendsten Nachrichten erhalten die Statusstufe 0 und die weniger dringenden Nachrichten erhalten höhere Nummern. Die Statusstufe 5 steht für den ausführlichsten Nachrichtentyp. Diese Stufen werden verwendet, um die Typen von Nachrichten zu steuern, die der Benutzer in Echtzeit empfängt. (Die Ausführlichkeit wird mit dem Befehl dscontrol festgelegt.) Schwer wiegende Fehler sollten immer auf der Stufe 0 protokolliert werden.
Nachricht
Die Nachricht, die in die Protokolldatei geschrieben werden soll. Der Wert für diesen Parameter ist eine Java-Standardzeichenfolge.

Funktion getAdvisorName

Die Funktion getAdvisorName gibt eine Java-Zeichenfolge mit dem Suffix des Namens Ihres angepassten Advisors zurück. Für einen Advisor mit dem Namen ADV_cdload.java gibt diese Funktion beispielsweise den Wert cdload zurück.

An diese Funktion werden keine Parameter übergeben.
Avoid trouble Avoid trouble: Dieser Wert kann während einer Instanziierung eines Advisors nicht geändert werden. gotcha

caller.getCurrentServerId()

Die Funktion getCurrentServerId gibt eine Java-Zeichenfolge zurück, die eine eindeutige Darstellung für den aktuellen Server ist. Dieser Wert ändert sich gewöhnlich bei jedem Aufruf des angepassten Advisors, weil der Advisorbasiscode nacheinander alle Servermaschinen abfragt.

Diese Funktion verwendet keine Parameter.

caller.getCurrentClusterId()

Der Funktionsaufruf getCurrentClusterId gibt eine Java-Zeichenfolge zurück, die eine eindeutige Darstellung für den aktuellen Cluster ist. Dieser Wert ändert sich gewöhnlich bei jedem Aufruf des angepassten Advisors, weil der Advisorbasiscode nacheinander alle Cluster abfragt.

Diese Funktion verwendet keine Parameter.

caller.getSocket()

Der Funktionsaufruf getSocket gibt einen Java-Socket zurück, der den Socket darstellt, der für den aktuellen Server zur Kommunikation geöffnet wurde.

Diese Funktion verwendet keine Parameter.

caller.getLatestLoad()

Die Funktion getLatestLoad ermöglicht es einem angepassten Advisor, den aktuellen Lastwert für ein bestimmtes Serverobjekt abzurufen. Die Lastwerte werden vom Advisorbasiscode und vom Managerdämon in internen Tabellen verwaltet. Dieser Funktionsaufruf ist hilfreich, wenn Sie das Verhalten eines Protokolls oder Ports vom Verhalten eines anderen abhängig machen möchten. Sie können diesen Funktionsaufruf beispielsweise in einem angepassten Advisor verwenden, der einen bestimmten Anwendungsserver inaktiviert, wenn der Telnet-Server auf der betreffenden Maschine inaktiviert wird.

Die Syntax ist wie folgt:
int caller.getLatestLoad (String Cluster-ID, int Port, String Server-ID)
Die drei Argumente zusammen definieren ein einziges Serverobjekt.
Dieser Befehl hat die folgenden Parameter:
Cluster-ID
Die Clusterkennung des Serverobjekts, für das der aktuelle Lastwert abgerufen werden soll. Dieses Argument muss eine Java-Zeichenfolge sein.
Port
Die Portnummer des Serverobjekts, für das der aktuelle Lastwert abgerufen werden soll.
Server-ID
Die Serverkennung des Serverobjekts, für das der aktuelle Lastwert abgerufen werden soll. Dieses Argument muss eine Java-Zeichenfolge sein. Der Rückgabewert ist eine ganze Zahl.
  • Ein positiver Rückgabewert stellt den tatsächlichen Lastwert des abgefragten Objekts dar.
  • Der Wert -1 gibt an, dass der abgefragte Server inaktiv ist.
  • Der Wert -2 gibt an, dass der Status des abgefragten Servers unbekannt ist.

caller.receive()

Die Funktion receive ruft Informationen von der Socket-Verbindung ab. Die Syntax ist wie folgt:
caller.receive(StringBuffer *response)
Dieser Befehl hat die folgenden Parameter:
response
Dies ist ein Zeichenfolgepuffer, in dem die abgerufenen Daten abgelegt werden. Außerdem gibt die Funktion einen ganzzahligen Wert mit der folgenden Signifikanz zurück:
  • 0 gibt an, dass die Daten erfolgreich gesendet wurden.
  • Eine negative Zahl zeigt einen Fehler an.

caller.send()

Die Funktion send verwendet die eingerichtete Socket-Verbindung, um ein Datenpaket über den angegebenen Port an den Server zu senden. Die Syntax ist wie folgt:
caller.send(String Befehl)
Dieser Befehl hat die folgenden Parameter:
Befehl
Diese ist eine Zeichenfolge, die die an den Server zu sendenden Daten enthält. Die Funktion gibt einen ganzzahligen Wert mit der folgenden Signifikanz zurück:
  • 0 gibt an, dass die Daten erfolgreich gesendet wurden.
  • Eine negative Zahl zeigt einen Fehler an.

getLoad()

int getLoad( int iConnectTime; ADV_Thread *caller )
Diese Funktion hat die folgenden Parameter:
iConnectTime
Gibt an, wie lange (in Millisekunden) der Aufbau der Verbindung gedauert hat. Diese Lastmessung wird vom Advisorbasiscode durchgeführt und an den angepassten Advisorcode übergeben, der die Messung bei der Rückgabe des Lastwerts verwenden oder ignorieren kann. Wenn die Verbindung scheitert, wird der Wert auf -1 gesetzt.
caller
Die Instanz der Advisorbasisklasse, in der Advisorbasismethoden bereitgestellt werden. Die Funktionsaufrufe, die für angepasste Advisor zur Verfügung stehen, sind die Methoden bzw. Funktionen, die in den folgenden Artikeln beschrieben werden. Diese Methoden werden vom Advisorbasiscode unterstützt. Einige dieser Funktionsaufrufe können direkt ausgeführt werden, z. B. function_name(), aber andere erfordern das Präfix "caller". Caller stellt die Basisadvisorinstanz dar, die den ausgeführten angepassten Advisor unterstützt.

getAdviseOnPort()

Die Funktion getAdviseOnPort gibt die Nummer des Ports zurück, an dem der aufrufende angepasste Advisor ausgeführt wird.

Der Rückgabewert ist ein Java-Integer (int), und es werden keine Parameter an die Funktion übergeben.
Anmerkung: Dieser Wert kann während einer Instanziierung eines Advisors nicht geändert werden.

getAdvisorName()

Die Funktion getAdvisorName gibt eine Java-Zeichenfolge mit dem Suffix des Namens Ihres angepassten Advisors zurück. Für einen Advisor mit dem Namen ADV_cdload.java gibt diese Funktion beispielsweise den Wert cdload zurück. Diese Funktion verwendet keine Parameter. Beachten Sie, dass dieser Wert während einer Instanziierung eines Advisors nicht geändert werden kann.

getInterval()

Die Funktion getInterval gibt das Advisorintervall zurück, d. h. die Anzahl der Sekunden zwischen Advisorzyklen. Dieser Wert entspricht dem im Konstruktor des angepassten Advisors festgelegten Standardwert, sofern dieser Wert nicht zur Laufzeit mit dem Befehl "dscontrol" geändert wurde. Der Rückgabewert ist ein Java-Integer (int).

Diese Funktion verwendet keine Parameter.

suppressBaseOpeningSocket()

Mit dem Funktionsaufruf suppressBaseOpeningSocket kann ein angepasster Advisor angeben, ob der Basisadvisorcode einen TCP-Socket zum Server für den angepassten Advisor öffnet. Wenn Ihr Advisor keine direkte Kommunikation mit dem Server verwendet, um den Status zu bestimmen, muss dieser Socket unter Umständen nicht geöffnet werden. Dieser Funktionsaufruf kann nur ein einziges Mal eingesetzt werden, und er muss von der Routine Methode "ADV_AdvisorInitialize()" abgesetzt werden.

An diese Funktion werden keine Parameter übergeben.

Reference topic    

Terms and conditions for information centers | Feedback

Last updated: May 30, 2013 07:18 AM EDT
File name: rprf_advcustmeth.html