2009-05-27 6 views
11

Nous envisageons d'utiliser Configuration Admin Service en tant qu'API principale pour la configuration des composants dans notre application OSGi. Ce serait bien si nous pouvions réutiliser une implémentation existante, alors j'essaie d'étudier et d'évaluer les plus populaires. Je sais qu'il est:Implémentations existantes du service OSGi Configuration Admin?

Y at-il d'autres mises en œuvre à prendre en compte?

De même, je n'ai pas été en mesure de trouver une bonne documentation pour ces implémentations. Je serais principalement intéressé par les détails spécifiques à la mise en œuvre. Par exemple, je me demandais comment les implémentations différentes persistaient les données de configuration (par exemple, plusieurs fichiers de propriétés, un fichier XML, plusieurs fichiers XML, une base de données, ...).

Répondre

6

Les trois implémentations publiques que je connais sont

la mise en œuvre d'Equinox du ConfigurationAdmin un service semble ne pas supporter le contrôle fin de la politique de persistance, comme le fait Felix, et l'implémentation de Knopflerfish ressemble (je n'ai lu la source que brièvement) à celle d'Equinox.

Le Felix semble être le dernier mis à jour et le plus fiable.

Actuellement, ce sont les seuls que je peux trouver; Chez dm Server, nous avons pris la décision d'utiliser le bundle de Felix, qui peut maintenant être obtenu à partir du SpringSource Enterprise Bundle Repository, où vous pouvez rechercher rapidement Apache Felix ou ConfigAdmin.

+0

Merci pour la confirmation, nous avons décidé d'utiliser aussi l'implémentation de Felix Config Admin (avec notre propre stratégie de persistance). –

7

Felix's Configuration Admin a un default implementation qui persiste dans le système de fichiers, mais ils définissent une interface de service (org.apache.felix.cm.PersistenceManager) pour d'autres backends que vous pouvez brancher à la place.

L'implémentation par défaut effectue les opérations suivantes:

Les données de configuration stocke classe FilePersistenceManager dans propriétés comme les fichiers dans un répertoire donné. Tous les fichiers de configuration sont situés dans le même répertoire.

Les fichiers de configuration sont créés dans le répertoire de configuration en ajoutant l'extension ".config" au PID de la configuration. Le PID est converti en un nom de chemin relatif en remplaçant les points inclus par des barres obliques. Les caractères non symboliques dans le PID sont codés avec leur code de caractère Unicode en hexadécimal.

1

Juste pour compléter la réponse plus loin: Personnellement, je préfère aussi l'implémentation de Felix.Pour obtenir un exemple de modification de la méthode de stockage à l'arrière-plan à l'aide d'un PersistenceManager, voir également l'implémentation this qui utilise des fichiers de propriétés Java standard comme stockage de sauvegarde. A quelques limitations, mais au moins vous permet de stocker votre configuration avec votre application et en dehors de votre implémentation du framework OSGi.