Hierarchie
Um Konflikte zwischen verschiedenen Modulen und dessen Komponenten zu vermeiden, werden die Klassen – soweit wie möglich – über einzelne, voneinander getrennte Classloader geladen. Hierbei gilt die folgende Classloader-Hierarchie:
Die nachfolgende Grafik zeigt die Modul-Ressourcen-Aufteilung in die einzelnen Classloader. Das Beispiel-Modul in der folgenden Grafik enthält eine Projekt- und eine Web-Komponente (lokal), einen Editor (global) sowie eine Library und einen Service (global). Außerdem sind noch Modul-Ressourcen für die Modul-Steuerungs-Klasse definiert.
Alle lokalen Komponenten werden zusammen mit den Modul-Ressourcen im Local Module-Classloader zusammengefasst.
Die serverweiten Ressourcen der Library und des Services gelangen in den Global Module-Classloader. Dieser ist nicht direkt, sondern nur über den FirstSpirit-Server-Classloader erreichbar. Dieser delegiert alle findClass()- und findResource()-Aufrufe an die Module weiter. Die Classloading-Hierarchie ermöglicht, dass die lokalen Klassen (wie die Konfigurations-GUI) globale Klassen (beispielsweise einen Service) verwenden können.