Ich arbeite in einer Java EE-Umgebung, in der sich jede Anwendung in einer eigenen WAR-Datei befindet. In der WEB-INF/lib jeder Anwendungs-WAR-Datei befindet sich ein gemeinsames Jar, das von allen Anwendungen gemeinsam genutzt wird. Dieses gemeinsame Jar enthält mehrere Singletons, auf die von vielen Punkten im Code zugegriffen wird. Aufgrund der War-File-Grenzen hat jede Anwendung ihre eigenen Instanzen der Singletons. So arbeiten wir heute, da wir einige Singletons in jeder Anwendung anders konfigurieren wollen.Migrationslösung für Singletons in einer OSGI-Umgebung
Jetzt bewegen wir uns in Richtung einer OSGi-Umgebung, wo diese Lösung nicht mehr funktioniert, da jedes Paket seinen eigenen Klassenlader hat. Wenn ich also versuche, auf MySingleton zuzugreifen, das im Bundle "common.jar" von Bundle "appA. jar "oder aus dem Bundle" appB.jar "Ich werde die gleiche Instanz bekommen.
Denken Sie daran, ich möchte eine andere Instanz eines Singleton pro Bündel "wollen". (so ironisch wie es klingt)
Jetzt ist mir klar, die ideale Lösung wäre, den Code zu reparieren, nicht auf diese Singletons verlassen, aber aufgrund eines engen Zeitplans habe ich mich gefragt, ob Sie eine Art von Migration Lösung vorschlagen können das würde mir erlauben, bündelweite Singletons zu verwenden, so dass jeder von ihnen pro Bündel konfiguriert werden könnte.
In Bezug auf Option 2, arbeitet OSGi mit War-Dateien? Ich dachte, OSGi-Bundles sind einfach JAR-Dateien. –
In der OSGi-Spezifikation gibt es nichts, was ein Bundle auf eine Instanz einer JAR-Datei beschränkt. Beispiele für WAR-Unterstützung finden Sie unter Spring DM und OPS4J. – SteveD