Zu Beginn der Implementierung wurden zunächst die Quelldateien des bisherigen MASA entflochten, da sich im gleichen Zweig des CVS-Repositories sowohl Klassen des Agentensystems, als auch Klassen spezifischer Agentengattungen befanden. Notwendig wurde dieser Schritt, um getrennte JAR-Distributionen der einzelnen Agenten nach Kap. 6.5.1 erstellen zu können.
Die sich daraus ergebende Oberstruktur im CVS-Repository ist in Abbildung 7.1 zu sehen:
Gleichzeitig wurde sowohl für das Agentensystem als auch für Agenten eine neue Produktionsumgebung entwickelt, die in Anhang A beschrieben wird. Für die Agenten Webserver und ASManagementAgent kommt diese neue Produktionsumgebung bereits zum Einsatz.
In JDK 1.2 ist die Methode stop() der Klasse java.lang.Thread als deprecated bezeichnet, d.h. sie sollte nicht mehr verwendet werden. Allerdings ist diese Methode essentiell für die Terminierung einer Agenteninstanz, konkret für das (zwangsweise) Anhalten eines Threads. Sun stellt momentan keine für MASA akzeptable Alternative für stop() bereit, weshalb diese Methode trotzdem weiterhin verwendet wird, bis ein entsprechender Ersatz durch eine spätere JDK-Version verfügbar ist.
Weiterhin wurde in diesem Schritt die alte CORBA-Entwicklungsumgebung Visibroker gegen Orbacus 3.1.2 ausgetauscht. Erheblich erleichtert wurde die gesamte Umstellung dabei durch die neue Produktionsumgebung.
Während der Entflechtungsarbeiten fiel auf, daß einige Konstanten ``hart'' in die Quelltexte von Agenten bzw. des Agentensystems einkodiert waren. Um die Wartbarkeit der Quellen zu verbessern wurden deshalb neue Klassen angelegt, die ausschließlich Konstantendefinitionen7.3 enthalten.
Die Klassen
In der Klasse tools.GlobalConstants befinden sich MASA-spezifische Konstantendefinitionen wie z.B. der MASA-Versionsstring.
Für die CVS-Verzeichnisse system/ und system_gui/ wurden
alle Quellen nach ```hartkodierten'' Konstanten durchsucht, und diese
durch entsprechende symbolische Konstanten aus den beschriebenen
Klassen ersetzt.
Um eine Basis für einen generischen Logging-Mechanismus zu schaffen und die Fehlersuche während der Entwicklung zu erleichtern, wurde die sehr einfache Möglichkeit zu Fehlerausgabe in tools.Debug durch einen leistungsfähigeren Logging-Mechanismus ersetzt.
Dieser unterstützt nun, in Anlehnung an den syslog-Mechanismus von Unix-Systemen, verschiedene Quellen (Facilities) von Fehlerausgaben und unterschiedliche ``Dringlichkeiten'' (Levels). Weiterhin wird die automatische Ausgabe von java.lang.Trowable-Objekten unterstützt.
Die zur Verfügung stehenden Facilities sind in der Klasse tools.Debug in den Konstanten mit dem Präfix FACILITY_, die Levels in den Konstanten mit dem Präfix LEVEL_ definiert.
Zur Ausgabe von Fehler- bzw. Logmeldungen sind folgende Methoden definiert:
Daneben stehen, für Debug-Zwecke, die folgenden Methoden bereit:
Gibt die Belegung einiger Standard Java-Properties aus.
Gibt eine Übersicht aller Threads aus, die zur Thread Group inTG gehören.
Neben diesen Funktionen besteht mit dem neuen Logging-Mechanismus noch die Möglichkeit, die Ausgabe von Meldungen nach Facility und Level zu unterdrücken bzw. zu ermöglichen. Die Konfiguration erfolgt dabei über den LoggerConfigAgent. Am Applet des LoggerConfigAgent (Abbildung 7.2) läßt sich die Ausgabe von Facility/Level-Kombinationen einzeln steuern, sowie der Kopf, der zu jeder Meldung ausgegeben wird, konfigurieren.
An den Produkten Orbacus und OrbacusSSL waren einige Änderungen notwendig, um diese für die neue MASA-Implementierung verwenden zu können. Ursache hierfür waren Implementierungsmängel der jeweiligen Produkte, die sich erst im Laufe der Implementierung der erweiterten MASA-Version zeigten.
Die an Orbacus bzw. OrbacusSSL durchgeführten Änderungen liegen der MASA-Distribution in Form von Unix patch-Dateien bei.
Dabei zeigte sich jedoch, daß das Attribut in OrbacusSSL, welches das zu verwendende Zertifikat referenziert, in der Quelldatei com/ooc/SSL/impl/SSLimpl.java als static deklariert war. Die Folge war, daß alle ORB-Instanzen das Zertifikat des zuletzt instanziierten ORB zur SSL-Kommunikation benutzen, womit OrbacusSSL in der vorliegenden Form für MASA unbrauchbar gewesen wäre. Durch Entfernen des static Modifikators und einigen weiteren Änderungen, die durch Seiteneffekte aus dem geänderten Attributmodifikator notwendig wurden, konnte dieses Manko jedoch behoben werden.
Weiterhin wurde im SSLCurrent-Objekt die Zertifikatkette des Kommunikationspartners in Form eines com.ooc.SSL.X509CertificateChain-Objekts geliefert. Dieses enthielt allerdings nur eine DN-Repräsentation der einzelnen Zertifikate und nicht die kompletten Zertifikate inklusive öffentlichem Schlüssel und X.509 Extensions. Somit wären Überprüfungen der Zertifikatkette auf ihre Integrität durch MASA ausgeschlossen gewesen. Deshalb wurde die Klasse com.ooc.SSL.IAIK.X509Certificate und die zugrundeliegende IDL-Definition um das Attribut rawIAIKCert erweitert, welches eine serialisierte Form des Java-Objekts com.IAIK.X509Certificate enthält.