Thema dieser Dokumentation / Das FirstSpirit 5 Modul- / Komponenten-Modell / Namensgleichheit bei Modul-Ressourcen (z.B. Zip-Exportdateien)
Namensgleichheit bei Modul-Ressourcen (z.B. Zip-Exportdateien)
Existieren verschiedene Module mit namensgleichen Ressourcen, z. B. myZipExport.zip in Modul01 und Modul02 z. B. jeweils in den Modulverzeichnissen files innerhalb eines FSM-Archives, wird durch den Server-Classloader die erste gefundene Ressource mit dem Dateinamen myZipExport.zip geladen, also analog zur Java-VM. Wenn mehrere gleichnamige JARs im Classpath liegen, gewinnt die erste gefundene Ressource. Grundlegend sind Modul-Ressourcen systemweit verfügbar. D.h., sie werden in ein temporäres Verzeichnis (eines pro Modul) entpackt und sind dann über den Server-ClassLoader erreichbar. Das führt dazu, dass bei Namensgleichheit von Dateien das erste Modul gewinnt bzw. dessen Ressource myZipExport.zip „gewinnt“.
Um diese Limitierung zu umgehen, ist der empfohlene Weg, die Dateien mit ins JAR neben die Klasse zu legen, die diese Dateien (myZipExport.zip) benötigt. Mit MyClass.class.getRessourceAsStream(...) können diese Ressourcen anschließend konfliktlos geladen werden, in diesem Fall also ZipImporter.class.getResourceAsStream( myZipExport.zip);.
Nicht zu verwechseln mit getResource(…); hier wird eine URL zurückgegeben, welche Remote auf dem FirstSpirit-Server nicht zum temporären Verzeichnis umgesetzt wird.