Zastanawiałem się ostatnio w jaki sposób można aplikacjom działającym na serwerze jboss udostępnić ustawienia zdefiniowane w zewnętrznym pliku konfiguracyjnym. Niby prosta sprawa, ale nie chciałem zaszywać w aplikacji ścieżki do pliku konfiguracyjnego.
Okazuje się, że w jbossie można w bardzo prosty sposób wstrzyknąć coś do systemowych właściwości. Wystarczy wyedytować plik properties-service.xml w katalogu deploy:
<server>
<mbean code="org.jboss.varia.property.SystemPropertiesService"
name="jboss:type=Service,name=SystemProperties">
<attribute name="URLList">
http://somehost/some-location.properties,
./conf/somelocal.properties
</attribute>
<attribute name="Properties">
property1=This is the value of my property
property2=This is the value of my other property
</attribute>
</server>
Atrybut URLList jest listą oddzielonych przecinkami URLi wskazujących na pliki properties, które mają zostać załadowane. Atrybut Properties specyfikuje pary właściwości w postaci nazwa=wartość.
Teraz już bez problemów można odwoływać się w kodzie aplikacji do tak dodanych właściwości przy pomocy standardowego kodu:
System.getProperty("property1");

