Когда моя служба верблюдов запускается на jboss fuse, она читает свойство следующим образом:
import org.apache.camel.PropertyInject;
@PropertyInject("my.value")
private String myValue;
Я хочу развернуть небольшой EJB вместе со службой верблюдов, которая обновляет это свойство при запуске, так:
@Singleton
@Startup
public class PropertyOverrideEjb {
@PostConstruct
public void init() {
// TODO:: update some runtime properties
}
}
До сих пор я пытался сделать несколько вещей в методе init ():
final String myVal = System.getProperty("my.value");
System.out.println("#### it is:: " + myVal);
Но sysout показывает как ноль.Затем я попытался прочитать его, используя в качестве заголовка свойство filename:
final String myVal = System.getProperty("property_filename_in_jboss_my.value");
System.out.println("#### it is:: " + myVal);
Но я также вижу нулевой ответ.
Затем я посмотрел на Примечания верблюда , я вижу этот блок комментариев:
Доступно с Camel 2.5. Можно переопределить значение свойства во время выполнения, используя свойство JVM System, без необходимости перезапускать приложение, чтобы выбратьдо изменения.Это также может быть выполнено из командной строки путем создания свойства JVM System с тем же именем, что и свойство, которое оно заменяет новым значением.
Пример:
javaPropertiesComponent pc = context.getComponent ("свойства", PropertiesComponent.class);pc.setCache (ложь);System.setProperty ("cool.end", "mock: override");System.setProperty ("cool.result", "override");context.addRoutes (new RouteBuilder () {@Override public void configure () генерирует исключение {from ("direct: start"). to ("properties: cool.end"); from ("direct: foo"). to ("properties: mock: {{cool.result}}");}});context.start ();getMockEndpoint ( "фиктивный: переопределение"). expectedMessageCount (2);template.sendBody ("direct: start", "Hello World");template.sendBody ("direct: foo", "Hello Foo");System.clearProperty ( "cool.end");System.clearProperty ( "cool.result");assertMockEndpointsSatisfied ();
Однако предлагаемое ими решение кажется неполным, так как я не уверен, как я мог бы вставить CamelContext в EJB, который не часть того же самого развертываемого.