Thema dieser Dokumentation / FirstSpirit Modul-Grundkonzeption / Modul-Bestandteile / Ressourcen / Gültigkeitsbereich
Gültigkeitsbereich
Die Erreichbarkeit bzw. der Gültigkeitsbereich einer Ressource kann über das Attribut scope gesteuert werden. Die entsprechenden Jar-Archive, Verzeichnisse und/oder Dateien können entweder nur innerhalb des Moduls (scope="module") oder serverweit (scope="server") erreichbar sein.
<resource scope="module">libs/mod.jar</resource> <!-- Klassen sind nur
innerhalb des Moduls
erreichbar. -->
<resource scope="server">libs/lib.jar</resource> <!-- Klassen sind
server-weit
verfügbar. -->
Serverweiter Gültigkeitsbereich: Ist eine Komponente (beispielsweise eine Library-Komponente) serverweit gültig, stehen die enthaltenen Klassen (verpackt in einem oder mehreren Jar-Archiven) nach der Installation auf dem Server, im Client, in Skripten und anderen Modulen ohne weitere Aktivierung zur Verfügung.
Nachteil: Alle Klassen liegen in einen Namespace und damit kann es jede Klasse nur einmal geben. Also: Keine verschiedenen Versionen einer Klasse.
Modul-lokaler Gültgkeitsbereich: Ist eine Komponente (beispielsweise eine Library-Komponente) modul-lokal gültig, so sind die Klassen nur innerhalb des Moduls verfügbar. Jedes Modul sieht "seine" lokalen Bibliotheken und die globalen Bibliotheken. In unterschiedlichen Modulen können damit verschiedene Versionen der gleichen Klasse existieren, ohne sich gegenseitig zu beeinflussen.
Es gilt: Klassen aus global-definierten Jars können keine Klassen aus modul-lokal definierten Jars benutzen. Der umgekehrte Weg ist jedoch möglich.
Standardverhalten:Wird kein Gültigkeitsbereich definiert, hängt der Gültigkeitsbereich vom Typ der Komponente ab (siehe Komponenten-Typen):
Modul-lokaler Gültigkeitsbereich (standardmäßig, falls nicht anders definiert):
- innerhalb eines Moduls
- alle Komponenten vom Typ ProjectApp
- alle Komponenten vom Typ WebApp
- alle Komponenten vom Typ WebServer
Serverweiter Gültigkeitsbereich (standardmäßig, falls nicht anders definiert):
- alle Komponenten vom Typ Bibliothek
- alle Komponenten vom TypEditor
- alle Komponenten vom Typ Service
- alle Komponenten vom Typ Public
Hinweis: Um Konflikte zu vermeiden, sollten alle Ressourcen (Jar-Archive), soweit das möglich ist, modul-lokal definiert werden.