Wie bereits erwähnt, entsprechen die Adaptor-Clients dem C-Beans Konzept des JDMK. Wenn eine Management-Applikation auf einen Agenten über einen Adapter zugreifen möchte, muß er sich zunächst mit diesem verbinden. Die Verbindung geschieht dadurch, daß auf Agentenseite ein AdaptorClient-Objekt instantiiert wird, welches die spezifischen Eigenschaften (Port, Rechner, Protokoll) des Adapters enthält, zu welchem verbunden werden soll. So kann beispielsweise mittels dieses AdaptorClient-Objekts ein M-Bean im Agenten instantiiert bzw. registriert oder de-registriert bzw. gelöscht werden. Falls ein AdaptorClient-Objekt verwendet wird, bedeutet dies implizit, daß hierbei eine Java-Implementierung vorausgesetzt wird. Falls mit einem Manager, der in einer anderen Programmiersprache implementiert wurde, auf den Agenten zugegriffen wird, muß das AdaptorClient-Objekt unter Zuhilfenahme des Java Native Interface (JNI), welches in Kapitel 6.12 beschrieben wird, mit dem C++-Programmcode verbunden werden. Im Falle des SNMP-Adapters kann der Zugriff durch einen MIB-Browser geschehen, welcher keinen AdaptorClient verwendet. Es sei darauf hingewiesen, daß bei Zugriff über den SNMP- und HTML-Adapter kein AdaptorClient verwendet wird. In Tabelle 3.2 ist aufgeführt, welche Adapter verwendet werden und über welche Zugriffsmöglichkeiten diese verfügen.
Adaptor | AdaptorClient | Andere |
RMI | + | RMI-(Client/Manager) |
IIOP | + | IIOP-(Client/Manager) |
HTTP | + | HTTP-(Client/Manager) |
HTTPS | + | HTTPS-(Client/Manager) |
SNMP | - | SNMP-MIB-Browser, SNMP-Manager |
HTML | - | Web-Browser |
Bei Verwendung des AdaptorClient ist in erster Linie keine besondere
Angabe des Protokolls bei der Instantiierung notwendig, es genügt, das
Interface adaptorMO
zu verwenden. Das bedeutet, daß
Klassen, welche dieses Interface implementieren mit jedem
AdaptorClient kommunizieren können. Die Auswahl des Protokolls
erfolgt bei Aufruf der connect
-Methode, welche die Verbindung
zu dem Adapter auf der Agentenseite realisiert. Auf das
adaptorMO
Interface gibt es zwei Zugriffsebenen:
getValue
bzw. setValue
-Methoden
durchgeführt werden. Diese Methode ist nicht sehr
transparent, und eignet sich für kleinere Änderungen an M-Beans,
wenn kein C-Bean instantiiert werden muß.
// Low Level Interface ... ObjectName objName = new ObjectName("SBCS-TIS2-MIB:tis20.impl.NetworkParmsImplMO"); String ComputerName = (String) adaptor.getValue(objName, "ComputerName"); ... // High Level Interface ... String GkStatisticsImplClass = "GkStatisticsImpl"; ObjectName GkStatisticsImplName = new ObjectName(domain + ":tis20.impl.GkStatisticsImpl"); tis20.impl.NetworkParmsImplMO NetworkParmsImpl = (tis20.impl.NetworkParmsImplMO) ((Vector)adaptor.getObject(NetworkParmsImplName, null)).firstElement(); String ComputerName = NetworkParmsImpl.getComputerName(); ...Die unter Kapitel 3.4 beschriebenen Protokolle können durch AdaptorClients realisiert werden, indem eine Instanz kreiert wird. Das Zusammenspiel zwischen AdaptorClient, Adapter und M-Beans ist in Abbildung 3.3 dargestellt.
Abbildung: Zugriff über AdaptorClient