2017-06-29 1 views
0

Le cas suivant:Comment puis-je ajouter dynamiquement la propriété de .cfg (OSGI) à persistence.xml (Hibernate)

dans mon fichier test_property.cfg j'ai la ligne de propriété:

... 
hibernate/persistence.schema=TEST_1 
... 

dans le persistence.xml i ont la ligne de réglage:

... 
<property name="hibernate.default_schema" value="${hibernate/persistence.schema}" /> 
.... 

Mais après la construction du projet la valeur $ {Mise en veille prolongée/persistence.schema} - n'a pas remplacé


fichiers xml où j'utiliser la balise de plan - est ok, mais j'essaie de savoir comment utiliser les valeurs remplaçables pour persistence.xml de property.cfg test

Répondre

1

fichiers CFG ne sont utilisés que dans exécution et non à la phase de construction. -A la phase de construction, vous pouvez résoudre les variables maven comme vous le souhaitez en activant la recherche de ressources sur le dossier contenant votre fichier persistance.xml (here est une documentation utile). -A l'exécution, il n'est pas possible de lier une propriété du fichier cfg à un autre fichier xml. N'oublie pas que le bundle est déjà construit donc c'est un pot qui est immuable.

Ma solution:

-define un nouveau haricot qui consomment la propriété de CFG. Ici, nous sommes sûrs que tout changement dans le cfg au moment de l'exécution sera immédiatement détecté. -dans ce bean, lisez le fichier xml et remplacez la propriété voulue de celle déjà lue par cfg.

+0

-merci pour la réponse, oui c'est la bonne façon de résoudre le problème, aussi je veux ajouter quelques notes. - qui devra créer sa propre usine où vous serez en mesure de choisir quel persistence.xml à utiliser .. Je n'ai pas trouvé de décision, seulement personnaliser l'usine –