Questions & Answers

novomind
I'm new here

Von Service auf Konfiguration zugreifen

Hallo,

wir verwenden in unseren Modulen Services, die von allen Projekten auf dem Server verwendet werden kรถnnen. Diese Services haben eine Konfiguration, die mittels des Interfaces Configuration<ServerEnvironment> implementiert wurde. In der module.xml wird der Service dann folgendermaรŸen aufgerufen:

<module>

     ...

     <components>

          ...

          <service>

               <name>NameDesService</name>

               <displayname>Anzeigename des Service</displayname>

               <description>Beschreibung des Service</description>

               <class>voll.qualifizierter.name.der.Klasse.DesService</class>

               <configurable>voll.qualifizierter.name.der.Klasse.DerServiceConfiguration</configurable>

          </service>

          ...

     </components>

</module>

Die Service-Klasse (hier: DesService) soll auf ihre Konfiguration (hier: DerServiceConfiguration) zugreifen kรถnnen, sowohl lesend als auch schreibend. Leider finden wir keine Mรถglichkeit, vom Service auf die Konfiguration zuzugreifen. Umgekehrt (Konfiguration auf Service) geht es, da die Konfiguration รผber ServerEnvironment.getConnection().getService(DesService.class) die Klasse holen kann. Wir wรผrden aber gerne die Methode Configuration.getParameter(String) zum Zugriff verwenden. Ist das nicht mรถglich oder haben wir nicht gut genug gesucht?

Viele GrรผรŸe

0 Kudos
10 Replies
feddersen
Community Manager

Im Service steht das ServerEnvironment zur Verfรผgung, was Zugriff auf das Konfigurationsverzeichnis des Services bietet.

0 Kudos

Das haben wir auch schon herausgefunden. Leider nรผtzt uns das nicht viel, da das Lesen und Schreiben der Konfigurationsdatei vom Configuration-Objekt รผbernommen wird. Dieses hรคlt ein Properties-Objekt, welches wiederum die einzelnen Konfigurationsparameter enthรคlt. รœber die durch das Interface Configuration vorgegebene Methode getParameter(String) kann auf die Kofigurationsparameter zugegriffen werden. Dazu benรถtigen wir aber das Configuration-Objekt.

Viele GrรผรŸe

0 Kudos

Sie mรผssen an der Stelle das Configuration Interface selbst implementieren. Also aus dem Verzeichnis die Konfigurationsdatei ermitteln und daraus ein Properties-Objekt erzeugen. Danach die getParameter(String) Methode entsprechend implementieren. Also darin ein properties.getProperty(name) aufrufen.

0 Kudos

Haben wir gemacht. Und genau auf das Objekt wรผrden wir vom Service aus gerne zugreifen. Aber wir haben keine Mรถglichkeit gefunden, das vom Service aus zu tun.

Viele GrรผรŸe

0 Kudos

In unseren Beispielimplemtentierungen ist auch ein komplettes Beispiel enthalten. Siehe http://www.e-spirit.com/odfs50/de/dokumentation/entwickler/entwickler.html?community. Dort die Beispielimplementierung fรผr Komponenten herunterladen. MyServiceConfiguration und MyServiceImpl sind die entsprechenden Klassen.

0 Kudos

Auf die Seite kรถnnen wir nicht zugreifen, welche Zugangsdaten sind dafรผr nรถtig?

0 Kudos

0 Kudos

Die Klasse MyServiceConfiguration implementiert leider nicht das Interface Configuration und lรคsst sich daher nicht auf unseren Fall รผbertragen. Im Beispiel wird die Konfiguration durch den Service einfach erzeugt. Das kรถnnten wir natรผrlich auch so machen, nur gingen wir davon aus, dass das vom Framework รผbernommen wird, wenn der gesamte Service geladen wird. Das Configuration-Objekt muss also irgendwo herumliegen. Gibt es wirklich keine Mรถglichkeit, darauf zuzugreifen? Oder wird es nach laden der Konfiguration gleich wieder verworfen? Dann fragen wir uns aber, wozu die Methode Configuration.getParameter(String) dienen soll, denn diese ist ihrer Signatur nach zu urteilen darauf ausgelegt, dass das Objekt wรคhrend des gesamten Lebenszyklus des Service vorhanden ist.

Viele GrรผรŸe

0 Kudos

Es ist richtig, dass man selbst fรผr die Instanziierung eines Configuration-Objektes sorgen muss, wenn der Service gestartet wird. Das wird nicht automatisch vom Framework erledigt.

0 Kudos

Type a product name