next up previous contents
Next: 5.7 Konfiguration des Agenten Up: Übertragung der Meßdaten Previous: 5.6.1 Beschreibung

5.6.2 Realisierung

Die Umsetzung der oben beschriebenen Architektur in ein Klassenmodell ist in Abbildung 5.8 dargestellt.

  
Abbildung: Diagramm der für die Meßdatenübertragung notwendigen Klassen
\begin{figure}

 \begin{center}

 \leavevmode
 \epsfxsize =0.3\textwidth
 
\epsfbox {./Bilder/klassenKomm.eps}

 \end{center}
\end{figure}

Erhält die Klasse AgDataHandler die Nachricht, daß die ISDN-Verbindung offen ist, wird durch die Methode handleData geprüft, ob zur Übertragung vorhanden sind.

if (AgBasis.isdnStatus.performCheckISDNStatus() == 1) {
    int ok = 1;
    while ((dataObjects.size() > 0) && (ok == 1)){
        ok = performTransferData((DataObject)dataObjects.elementAt(0));
        if (ok == 1 )
            dataObjects.removeElementAt(0);
    }
}
Ist dies der Fall, werden sämtliche Datenpakete einzeln übertragen. Erst wenn die Methode performTransferData die korrekte Übergabe der Daten bestätigt hat, werden diese aus der lokalen Datenhaltung im Vektor dataObjects entfernt.
Um eine Verbindung zwischen dem Agenten und dem Manger herzustellen, wird ein sogenannter Adapter-Client erstellt. Dieser meldet sich bei dem RMI-Adapter des Managers an und erhält so Zugriff auf die dort platzierte Klasse DataReceiver.

String managerHost     = AgBasis.globalVariables.getmanagerHostName();
Dazu wird zunächst der Name des Managers aus der Konfigurationsklasse ausgelesen. Dann wird der Objektname des zu kontaktierenden M-Beans angegeben, der im Rahmen des Prototypen fest implementiert wird.

ObjectName name        = new ObjectName("defaultDomain:MgDataReceiver.SerialNo=1");
AdaptorClient adaptor  = new AdaptorClient();
adaptor.connect(null, managerHost, 1099, ServiceName.APT_RMI);
Die hier gezeigten Adapter-Clients entsprechen dem C-Bean Konzept des JDMK. Um nun auf den MgDataReceiver zugreifen zu können muß zunächst ein AdaptorClient-Objekt erzeugt werden. Mit Hilfe dieses Clients kann im folgenden Schritt die Verbindung zum Manager hergestellt werden. Dazu sind neben der Bezeichnung des Hostnamen auch die Art des Adapters (hier wurde ein RMI-Adapter genutzt) und der dazugehörige Port anzugeben.
Nun wird ein C-Bean mit Hilfe der getObject-Methode instanziiert.

MgDataReceiverMO dataReceiver 
         = (MgDataReceiverMO)((Vector)adaptor.getObject(name,null)).firstElement();
Über dieses C-Bean kann auf die entfernte Klasse wie auf eine lokale zugegriffen werden. Dies geschieht im Prototypen wie folgt:

boolean transferOK = dataReceiver.performReceiveData(da);
Bei dieser Art des Zugriffes über den Adapter-Client handelt es sich um einen sogenannten High-Level Zugriff.
Diese Form der Realisierung ermöglicht das Pushen der Daten vom Agenten zum Manager, d.h. der Agent entscheidet aus eigenem Antrieb, wann und welche Daten er übertragen will. Im Prototypen ist der ausschlaggebende Faktor der Aufbau der ISDN-Verbindung. Solange diese besteht, wird jedes Datenpaket nach der Zusammenstellung direkt übertragen. In der Methode AgDataHandler.performHandleData() besteht die Möglichkeiten, Regeln zu ergänzen. Diese können z.B. basierend auf der Variable lastTransfer eine Mindestpause zwischen zwei Übertragungen (nur eine Übertragung innerhalb von 24 Stunden) festlegen, eine Mindestdatenmenge definieren (mindestens 20 DataObjects) oder bestimmen, wie lange die ISDN-Verbindung bestehen muß bevor die Daten übertragen werden dürfen. Schließt man z.B. aus, daß der Agent in den ersten 60 Sekunden einer ISDN-Verbindung nicht tätig werden darf, erhöht dies die Wahrscheinlichkeit, daß die Übertragung des Benutzer nicht gestört wird.


next up previous contents
Next: 5.7 Konfiguration des Agenten Up: Übertragung der Meßdaten Previous: 5.6.1 Beschreibung
Copyright Munich Network Management Team