Как использовать org.jboss.varia.property.SystemPropertiesService и org.jboss.util.property.PropertyListener

Все

I have seen the jboss-service.xml which use an extended SystemPropertiesService class to reference to custom property file. But I didn't totВсеy understood this kind of usage yet. Could someone please give me some help to understand how to use these two class? thanks.

0
nl ja de

2 ответы

SystemPropertiesService очень полезен для определения свойств, к которым можно получить доступ из вашего приложения, обычно используется для параметризации приложения без необходимости изменения кода или даже пакета приложения (при условии, что вы размещаете jboss-service.xml за пределами войны/ухо/банку). Например, вы можете создать файл myapp-service.xml со следующим содержимым:


 
 <!-- Define the properties directly in the service.xml file-->
 
     myapp.property1=property1Value
     myapp.property2=property2Value
 
 <!-- You can also specify a route to another file where you define properties-->
 
     /home/myuser/txtlist.properties
 
 

Затем вы можете развернуть этот файл непосредственно в JBoss, определенные свойства будут видны всем приложениям, развернутым в одном JBoss, и вы сможете получить к ним доступ со статическим методом:

String System.getProperty(String propertyName)

Поэтому, если вы хотите получить доступ к значению myapp.property1 из своего приложения, вы бы сделали:

String property = System.getProperty("myapp.property");

С другой стороны, PropertyListener - это действительно интерфейс, который определяет слушателя, который будет срабатывать, когда какое-либо событие происходит с свойством. Org.jboss.util.property.PropertyAdapter - абстрактная реализация этого интерфейса. Чтобы использовать его, вы должны реализовать три метода (propertyAdded, propertyChanged, propertyRemoved), которые будут вызываться контейнером, когда свойство будет добавлено, изменено или удалено соответственно. Эти методы имеют объект PropertyEvent в качестве параметра, который позволяет вам узнать, какое свойство было затронуто.

Этот интерфейс/класс полезен, когда вы хотите, чтобы ваше приложение выполняло что-либо каждый раз, когда изменяется свойство (неправильная реализация будет заключаться в том, что вы проверяете каждое определенное время для изменения свойства), таким образом, когда JBoss обнаруживает, что свойство изменило его значение , он вызовет соответствующий метод (который вы должны реализовать с нужным поведением).

Например, если вы хотите напечатать новое значение свойства каждый раз, когда оно было изменено, вы можете реализовать метод propertyChanged следующим образом:

void propertyChanged (PropertyEvent pe){
   //check the property that has changed
    if (pe.getPropertyName().equals("myapp.property1")){
         System.out.println("The value of " + pe.getPropertyName() + " has changed to " + pe.getPropertyValue());
    }
}

Найдите дополнительную информацию в API , а для PropertyAdapter и PropertyEvent .

2
добавлено
Привет, @Toni S. Magraner, спасибо. Кажется, мы можем параметризовать configure в другом XML-файле в формате $ {myapp.property1} , правильно?
добавлено автор Joe.wang, источник
Не могли бы вы дать мне ценное чтение? Потому что я пытался искать в google, но пока не нашел хорошего чтения об этих двух классах. Если вы можете поделиться чем-то со мной, это будет оценено. Благодарю.
добавлено автор Joe.wang, источник
Что касается использования PropertyListener, не могли бы вы рассказать мне больше об этом? как в каком случае, мы должны реализовать PropertyListener? Благодарю.
добавлено автор Joe.wang, источник
Да, вы можете получить доступ к значениям свойств из xml-файлов с помощью этих обозначений, но вы должны убедиться, что свойство уже загружено до его доступа.
добавлено автор Toni, источник
Я добавил информацию о PropertyListener.
добавлено автор Toni, источник
Добавлена ​​информация об использовании и ссылках на API.
добавлено автор Toni, источник

В JBOSS 5.1 он работает только при помещении свойств или URL-адресов в properties-service.xml, и этот файл должен находиться в каталоге jboss.home/server/default/deploy.

0
добавлено