2016-05-02 12 views
0

Ich möchte zwei Dinge tun: Laden Sie eine Eigenschaft in eine Bean und aktualisieren Sie die Bean, wenn Eigenschaften aktualisiert werden.Wie man eine Eigenschaftendatei in Apache Camel 2.12 neu lädt?

Ich benutze JBoss Fuse 6.1, wo ich mein Anwendungspaket installieren kann und eine Eigenschaftendatei auf dem Server habe, wo ich einige Konfigurationen lesen muss. Die Eigenschaften haben die Folgezeile:

mediaTypeList=JSON,DOCX,TXT 

Und ich habe eine Java Bean, die ein Spiegel der Dateieigenschaft ist:

public class MediatType { 

    private List<String> mediaTypeList; 

    // GETTERs and SETTERs 

} 

Die Eigenschaft mediaTypeList zeigen die Liste der HTTP-Media, dass die Anwendung zugeben, und diese Liste könnte im Laufe der Zeit aktualisiert werden, so dass die Anwendung die Änderungen sehen muss.

Die Anwendung empfängt Datei-Upload-Anforderung und nur wenn der Dateityp zugelassen ist, kann die Datei hochgeladen werden. Um dies zu überprüfen, muss ich die Eigenschaftendatei mit einer Bean lesen.

Ich benutze Apache Camel 2.12 und konfiguriere die Route von Java DSL. Auch lese ich this zum Laden von Eigenschaften in Bohnen mit PropertyPlaceholder, aber es entspricht nicht meinen Anforderungen.

Gibt es eine Möglichkeit, die oben genannten Anforderungen mit Apache Camel PropertyPlaceholder zu erfüllen? Oder dort einen anderen Weg?

Grüße,

+2

Fuse verwendet Karaf. Sie sollten daher den [Configuration Admin Service] nutzen können (http://www.liquid-reality.de/display/liquid/2011/09/23/Karaf+Tutorial+Part+2+-+Verwendung+des+ Konfiguration + Admin + Service). – Ralf

+0

Danke @Ralf! Ich lese die Referenz und es sieht aus, was ich brauche. – ffcc

+0

Verwenden Sie Fabric mit JBoss-Sicherung? oder eigenständig? Verwenden Sie auch Blueprint oder Spring oder Java DSL? –

Antwort

0

In Bauplan Datei Verwendung cm: property-Platzhalter und eine Eigenschaftendatei mit dem Namen sample.cfg und legen Sie sie in $ FUSE_HOME Ordner/etc In

<cm:property-placeholder persistent-id="sample" 
update-strategy="reload"> 
</cm:property-placeholder> 

erstellen Kamel Route können Sie lesen mit Hilfe

<from uri="timer:foo?period={{period}}" />