2017-06-29 7 views
0

Der folgende Fall:Wie kann ich Eigenschaft dynamisch von .cfg (OSGi) persistence.xml (Hibernate)

in meinem test_property.cfg Datei i die Eigenschaft Linie haben:

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

im persistence.xml ich habe die Einstellung Zeile:

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

Aber nach dem Bauprozess das Projekt der Wert $ {Hibernate/persistence.schema} - hat ersetzt nicht


XML-Dateien, wo ich Plan-Tag - ist in Ordnung, aber ich versuche, herauszufinden, wie austauschbare Werte zu verwenden, für persistence.xml von Test property.cfg

Antwort

1

Cfg Dateien werden nur bei Laufzeit und nicht in Build-Phase verwendet.

- In der Build-Phase können Sie Maven-Variablen nach Belieben auflösen, indem Sie Ressourcen in dem Ordner mit Ihrer persistance.xml filtern (here ist eine nützliche Dokumentation).

- Zur Laufzeit ist es nicht möglich, eine Eigenschaft aus der cfg-Datei an eine andere XML-Datei zu binden. Vergiss nicht, dass das Bündel bereits gebaut ist, so dass es ein Glas ist, das unveränderlich ist.

Meine Lösung:

-definieren eine neue Bean, die die Eigenschaft von cfg verbrauchen. Hier sind wir sicher, dass Änderungen in der cfg zur Laufzeit sofort erkannt werden.

-in dieser Bean, lesen Sie die XML-Datei und überschreiben Sie die gewünschte Eigenschaft aus der bereits von cfg gelesen.

+0

-thank Sie für die Antwort, ja das ist der richtige Weg, um das Problem zu lösen, auch möchte ich ein paar Notizen hinzufügen. - Das muss eine eigene Fabrik erstellen, in der Sie auswählen können, welche persistence.xml verwendet werden soll. Ich habe keine Entscheidung gefunden, sondern fertigt nur die Fabrik –

Verwandte Themen