Questions & Answers

SOLVED
mkresse
I'm new here

Public Komponente mit projektlokaler Konfiguration

Jump to solution

Hallo zusammen,

ich mรถchte eine Public-Komponente (genaugenommen einen Upload-Hook) mit einer projekt-spezifischen Konfiguration versehen. Dazu wรผrde ich das entsprechende Modul um eine ProjectApp samt Configuration<ProjectEnvironment> (via <configurable/> in der module.xml) ergรคnzen.

Die Frage ist allerdings, wie ich aus der Public-Komponente dann an das Configuration-Objekt komme? Ich habe den praktischen LegacyModuleAgent gefunden, der mir passenderweise ein Properties-Objekt liefert (die notwendige projectId kann ich mir ja รผber den ProjectAgent holen), allerdings deuten Name und API-Docs an, dass diese Klasse nicht mehr verwendet werden sollte. Etwas anderes habe ich leider nicht gefunden.

Eine weitere Frage ist, wann ich die Konfiguration fรผr den Upload-Hook auslesen sollte - im Konstruktor oder sicherheitshalber erst direkt im entsprechenden preProcess()-Aufruf? Eine Implementierung des Component<ComponentDescriptor, ServerEnvironment> Interfaces in der Hoffnung auf Aufruf von init() hat leider nicht funktioniert.

Vielen Dank schonmal,

Martin

0 Kudos
1 Solution

Accepted Solutions
thmarx
I'm new here

Hallo Martin,

einen offiziellen Weg um eine projektspezifische Konfiguration in eine Public-Komponenten zu bekommen gibt es nicht. Ein paar Anregungen, wie du es machen kannst, hast du ja bekommen.

Ist deine Frage damit beantwortet?

Viele GrรผรŸe

Thorsten

View solution in original post

0 Kudos
5 Replies
Hendrik
New Responder

Hallo Martin,

meine Gedanken zu deiner Thematik:

a) Wenn du projektspezifische Konfigurationen benรถtigst wรผrde sich die Verwendung eines Konfigurations-Service anbieten. Dieser kรถnnte die jeweiligen Konfigurationen persistieren und, unter Angabe der Projekt ID, entweder ein Serializable Objekt deiner Wahl (z.B. Properties) zurรผckliefern oder gleich dedizierte Methoden zum Zugriff auf konkrete Konfigurationsparameter anbieten.

b) Falls du einen Service nutzt wirst du die Konfiguration "lazy" laden mรผssen da du รผber den parameterlosen Konstruktor keine Mรถglichkeit hast den Service zu laden. Die Konfiguration speichert man am besten in der UploadHook-Implementierung zwischen um nicht jedesmal auf den Service zugreifen zu mรผssen.

Ich habe das Interface SetServiceLocatorCallback mal probiert, funktioniert leider auch nicht..

Wir verwenden in unseren Projekten ebenfalls einen solchen Service um projektspezifische Konfigurationen zu speichern und abzufragen..

Hoffe das hilft evtl. ein wenig weiter!

Hallo Hendrik,

vielen Dank fรผr deinen Input. Den Ansatz, einen globalen Service projektspezifische Einstellungen verwalten und persistieren zu lassen hatte ich mir auch bereits รผberlegt - scheint dann wohl das einzig sinnvolle Vorgehen (jenseits des LegacyModuleAgents, der รผbrigens auch gut funktioniert) zu sein. Nur schade, dass die eigentlich ja vorhandene Funktionalitรคt (z.B. ProjectEnvironment) gar nicht genutzt wird (bzw. werden kann?).

Da meinen Beobachtungen nach fรผr jeden Upload eine neue UploadHook-Instanz erzeugt wird, macht ein Zwischenspeichern (zumindest fรผr meinen Einsatzfall) in einer Instanzvariablen keinen Sinn, da ich lediglich eine post-hook-Methode implementiere.

Danke und viele GrรผรŸe,

Martin

0 Kudos

Hallo Martin,

je nachdem wie "zeitaufwรคndig" die Initialisierung der Upload-Hook Instanz ist (Auslesen von projektspezifischen Konfigurationen mittels Service etc.) kรถnnte man noch รผber eine Singleton-Instanz nachdenken die von der Upload-Hook Instanz genutzt wird, macht die Sache vermutlich etwas performanter. Nach meiner Erfahrung sind FirstSpirit Komponenten die in den Client eingehรคngt werden und im Swing EDT ausgefรผhrt werden (StoreListener, ClientPlugin) nicht gerade fรถrderlich fรผr die Performance, gerade in riesigen Projekten..

In unserem Projekt verwenden wir einen eigens fรผr die Initialisierung von Singleton-Instanzen, Resource Bundles etc. genutzen Thread welcher direkt nach dem Start des Java Client mittels eines Client Plugin gestartet wird..

Beste GrรผรŸe,

Hendrik

0 Kudos

gedoppelt

0 Kudos
thmarx
I'm new here

Hallo Martin,

einen offiziellen Weg um eine projektspezifische Konfiguration in eine Public-Komponenten zu bekommen gibt es nicht. Ein paar Anregungen, wie du es machen kannst, hast du ja bekommen.

Ist deine Frage damit beantwortet?

Viele GrรผรŸe

Thorsten

0 Kudos

Type a product name