next up previous contents
Nächste Seite: Abkürzungsverzeichnis Aufwärts: 10. Die neue MASA Vorherige Seite: 10.1 Motivation   Inhalt

Unterabschnitte

10.2 Die Umgebung des Agentensystems


10.2.1 Makefiles

Im Wurzelverzeichnis der Agentensystems befindet sich das Master-Makefile, das alle Aktionen initiert und koordiniert. Daneben werden in Makefile.DEF einige prinzipielle Einstellungen bezüglich einiger benötigter Verzeichnisse gemacht (siehe Tabelle A.1). Beide Dateien enthalten Einstellungen, die unspezifisch für Tools oder Betriebssystemplattform sind und ausschließlich für das Basis-System verwendet werden.

Im Verzeichnis config/ befinden sich nun u.a. jene Makefiles, die werkzeug- oder plattformspezifische Einstellungen enthalten. Diese werden automatisch vom Master-Makefile eingebunden:

Makefile.masaconf:
Enthält Basiseinstellungen des gesamten MASA Systems. Darunter auch in der Variable MASA_PACKAGE das Java Package, welches das Basis-Package des gesamten Agentensystems darstellt.

Makefile.buildtools:
Definiert die für die Übersetzung und den Start des Agentensystem benötigten Tools. Betriebssystemplattform-spezifische Einstellungen werden aus den entsprechenden Unterverzeichnissen von config/ eingebunden.

Makefile.jcesetup:
Enthält Einstellungen für das verwendete JCE Toolkit.

Makefile.orbsetup:
Tools und Einstellungen, die spezifisch für die verwendete CORBA Entwicklungsumgebung sind.

Makefile.toolconfig:
Definiert die zu verwendenden Optionen aller Tools, die benötigt werden um MASA korrekt zu übersetzen und zu starten.

Dabei enthalten jene Dateien mit der Endung .MNM vordefinierte Einstellungen für die Arbeit am Lehrstuhl-Cluster. Diese werden automatisch benutzt, wenn an einem Rechner am Lehrstuhl gearbeitet wird. Für die Arbeit an Rechnern, die nicht im Lehrstuhl-Cluster eingebunden sind, werden die Pendants dieser Makefiles benutzt. Diese sind dann gegebenenfalls an die lokalen Gegebenheiten anzupassen.


Alle Makefiles in config/ werden nicht nur für die Übersetzung des Basis-Systems benutzt, sie werden auch von den Produktionsumgebungen der Agenten eingebunden. D. h. daß alle Einstellungen bezüglich Compiler, Toolkits, etc. nur einmalig und zentral getroffen werden müssen, womit eine konsistente Übersetzungs- und Laufzeitumgebung für Basis-System und Agenten gewährleistet wird.

Neben den Makefile in config/ befindet sich noch ein weiteres im Verzeichnis prod.java/, welches den eigentlichen Übersetzungsvorgang steuert.

Eine Aufstellung konkreter Kommandos, die das Master-Makefile unterstützt, ist in der Datei INSTALL enthalten.

10.2.2 Verzeichnisstruktur

Nachfolgend soll die zum Agentensystem gehörende Verzeichnisstruktur kurz beschrieben werden. Dabei sind Namen und Ort der einzelnen Unterverzeichnisse teilweise nicht fest eingestellt, sie werden vielmehr über Makefile.DEF festgelegt. Die Namen der Variablen, die dort belegt und wodurch die Datei- und Verzeichnisnamen festgelegt werden, sind Tabelle A.1 zu entnehmen.


Tabelle A.1: Makefile-Variablen für Verzeichnisnamen in system/
Verzeichnisname Makefile-Variable
bin/ -
PRODUCTION.default/ -
src/ BUILD_SOURCE_PATH
config/ MASA_MAKE_CONFIG
prod.java/ PROD_DIR
install/ MASA_INSTALL_PATH
tmp/ BUILD_TMP_PATH


Abbildung A.1: Unterverzeichnisse der Agentensystem-Produktionsumgebung
\begin{figure}
\centering\includegraphics [width=0.9\textwidth]{dir_system}\end{figure}

Die Struktur, wie sie in A.1 dargestellt ist, entspricht den Voreinstellungen aus Makefile.DEF.

10.2.2.1 Dateien im Wurzelverzeichnis system/

README:
Allgemeine Hinweise zum Basis-System.
INSTALL:
Anleitung und Hinweise zur Übersetzung und Installation.
RELEASE_NOTES:
Aufstellung über bekannte Probleme und versionsspezifische Anmerkungen
CHANGES:
Informelle Liste der Änderungen zwischen verschiedenen Versionen.
Makefile:
siehe Kapitel A.2.1.
Makefile.DEF:
siehe Kapitel A.2.1.

10.2.2.2 Verzeichnis bin/

Hier sind Hilfsprogramme enthalten, die zur Übersetzung des Agentensystems, oder zur Erstellung spezieller Dateien benutzt werden. Diese sind meist als Shell-Skripten realisiert und greifen selbst wiederum auf Einstellungen zurück, die in den Makefiles getroffen wurden. Im einzelnen:

signAgentJar:
Hilfsprogramm zum signieren eine JAR Datei.

genPropertiesFile:
Generiert die Properties-Datei des Agentensystems.

genRunScripts:
Generiert die plattformspezifischen Start-Skripten für den Naming-Service, EventChannel-Service und das Agentensystem.

genMasterRunScript:
Generiert das plattformübergreifende Start-Skript, welches auf die mittels genRunScripts erzeugten Skripte zurückgreift.

getHostname.sh:
Hilfsprogramm zum Auflösen des symbolischen DNS-Namen localhost in den entsprechenden FQDN.

agentCompatCheck:
Führt eine grobe Überprüfung von Quelltexten auf häufig gemachte Fehler durch. Beispielsweise wird überprüft, ob der Standard-Package-Präfix ``de.unimuenchen.informatik.mnm'' als Klartext im Code enthalten ist. Dieser sollte durch die in Abschnitt A.2.3 vorgestellten Macros ersetzt werden.

genMasaBootPolicyFile:
Generiert die Java-Policy Datei der JVM des Agentensystems.

Die Vorlagen für die zu erzeugenden Dateien sind jeweils in den gen...-Scripts selbst enthalten.

10.2.2.3 Verzeichnis src/

Dieses Verzeichnis enthält in einer Reihe von Unterverzeichnissen ausschließlich jene Quelltexte, die von Hand (also nicht durch Tools wie den IDL-nach-Java Übersetzer) erstellt wurden. Die Struktur in diesem Verzeichnis entspricht der relativen Java package-Hierarchie der Klassen ohne den gemeinsamen Präfix (vgl. Abbildung A.3).

Hier werden Änderungen an den Quelltexten vorgenommen.

10.2.2.4 Verzeichnis config/

Enthält eine Reihe von Makefiles, die in Kapitel A.2.1 näher erläutert werden.

10.2.2.5 Verzeichnis PRODUCTION.default/

Enthält Dateien die im CVS-Repository gespeichert werden sollen, aber noch nicht an ihrem endgültigen Bestimmungsort abgelegt werden können, da dieser erst später erzeugt wird. Beispiel: statische HTML-Seiten, die erst später in das install/ Verzeichnis kopiert werden.

10.2.2.6 Das Produktionsverzeichnis prod.java/

In diesem Verzeichnis befinden sich alle Quelltexte, die durch den Präprozessor generiert oder durch Tools automatisch erstellt wurden, sowie die daraus übersetzten .class-Dateien. Dieses Verzeichnis wird ausschließlich zur Übersetzung des Agentensystems benutzt. Änderungen an den Quelltexten werden immer im src/ Verzeichnis vorgenommen, ausgeführt wird das Agentensystem im install/ Verzeichnis.

10.2.2.7 Verzeichnis install/

Abbildung A.2: Das install/ Verzeichnis des Agentensystems
\begin{figure}
\centering\includegraphics [width=1.0\textwidth]{dir_install}\end{figure}

Das Verzeichnis install/ enthält alle zur Ausführung des Agentensystems notwendigen Komponenten, mit Ausnahme der zum ORB, JCE und Swing gehörenden .jar-Dateien:

masa.properties:
Enthält alle Agentensystem-spezifischen Java Properties, wurde durch system/bin/genPropertiesFile erzeugt.

autocreate.masa:
Beschreibt, welche Agenten beim Start des Agentensystems automatisch erzeugt werden sollen, Kopie der Datei autocreate.masa dem Verzeichnis system/PRODUCTION.default/install/. Eine Beschreibung der Syntax dieser Datei entnehme man der javadoc-Dokumentation der Klasse AutoCreateDescription.

config/:
Makefiles und Konfigurationen, die zur Implementierung und Übersetzung von Agenten benötigt werden. Kopie des Verzeichnisses config/ aus system/.

agents/:
Lokal installierte Agenten in Form von .jar-Dateien. Die in 7.4 eingeführte Klasse LocalFilesystemCodeRepository liest aus diesem Verzeichnis.

bin/:
Ausführbare Dateien zum Starten des Agentensystems und zugehöriger Services. Erzeugt durch system/bin/genRunScripts und system/bin/genMasterRunScript.

bin-dev/:
Ausführbare Dateien, die zur Implementierung und Übersetzung von Agenten benötigt werden.

certs/:
Paßwortgeschützte Zertifikate und Schlüsselpaare die durch das Agentensystem zur Laufzeit erzeugt werden.

classes/:
Java Klassen des Agentensystems.

htdocs/:
Durch javadoc erzeugte Quelltext-Dokumentationen des Agentensystems und von Agenten.

htgui/:
Dateien, die der Webserver Agent benötigt und dem Agentensystem zugeordnet sind. Besonders zu erwähnen ist hier die Datei MASA4Browser.jar, die alle Agentensystem-spezifischen Java Klassen enthält, die der Webbrowser benötigt, um das Applet eines Agenten ausführen zu können.

idl/:
Agentensystem-spezifische .idl Dateien, die zur Implementierung und Übersetzung von Agenten benötigt werden.

policy/:
Datei masa.boot.policy, die Policy-Datei der JVM des Agentensystems.

Alle Datei und Verzeichnisnamen sind nicht fest vergeben und können in system/config/Makefile.masaconf eingestellt werden. Die hierzu benutzten Variablen sind der Tabelle A.2 zu entnehmen. Weiterhin gibt die Tabelle Aufschluß darüber, in welchen Java Properties die entsprechenden Dateien und Verzeichnisse dem Agentensystem bekannt gegeben werden.


Tabelle A.2: Konfigurierbare Dateinamen und zugehörige Makefile-Variablen
Dateiname Makefile-Variable Property (ohne Präfix)
masa.boot.policy MASA_INSTALL_BOOT_POLICY_FILE via java Option: -Djava.security.policy==10.1
masa.properties MASA_INSTALL_PROPERTYFILE via java Option: -Dmasa.propfile=
autocreate.masa MASA_INSTALL_AUTOCREATEFILE autocreateFile
MASA4Browser.jar MASA_INSTALL_BROWSERBASEJARFILE browserBaseJarFile
Verzeichnisname Makefile-Variable Property (ohne Präfix)
config/ - -
agents/ MASA_INSTALL_AGENTS agentCodeBase
bin/ MASA_INSTALL_BIN -
bin-dev/ MASA_INSTALL_BINDEV -
certs/ MASA_INSTALL_CERTS certsPath
classes/ MASA_INSTALL_CLASSES agentSystemCodeBase
htdocs/ MASA_INSTALL_HTDOCS -
htgui/ MASA_INSTALL_HTGUI htmlCodeBase
idl/ MASA_INSTALL_IDL -
policy/ MASA_INSTALL_POLICY -



10.2.3 Produktionsprozeß

Soll das Agentensystem übersetzt werden, so werden zunächst alle im Verzeichnis src/idl/ enthaltenen IDL-Quelltexte durch den IDL-nach-Java Übersetzer in die entsprechenden Java-Quelltexte übersetzt, welche im Verzeichnis prod.java/ abgelegt werden.

Anschließend werden die Java-Quelldateien aus src/, gesteuert von den sich dort ebenfalls befindenden Makefiles, durch den Präprozessor gefiltert. Die erzeugten Dateien werden dann im Verzeichnis prod.java/ entsprechend der kompletten package-Hierarchie abgelegt. Diese setzt sich dabei aus dem in Makefile.masaconf/, in der Variablen __MASA_PACKAGE__ gesetzen Basis-package und der relativen Hierarchie, wie sie durch die Anordnung in src gegeben ist, zusammen. Abbildung A.3 stellt diesen Vorgang dar.

Abbildung A.3: Dynamische Anordnung entsprechend der package-Hierarchie (nach [Roel 98])
\begin{figure}
\centering\includegraphics [width=1.0\textwidth]{preproc_scheme}\end{figure}

Bei der Bearbeitung durch den Präprozessor werden im Fall von MASA hauptsächlich zwei Schritte durchgeführt:

Abschließend werden, gesteuert durch das Makefile in prod.java/, alle dort enthaltenen Quelldateien übersetzt.


next up previous contents
Nächste Seite: Abkürzungsverzeichnis Aufwärts: 10. Die neue MASA Vorherige Seite: 10.1 Motivation   Inhalt
harald@roelle.com