Cómo usar org.jboss.varia.property.SystemPropertiesService y org.jboss.util.property.PropertyListener
jboss-4.2.x (2)
El SystemPropertiesService es muy útil para definir propiedades a las que se puede acceder desde su aplicación, generalmente se usa para parametrizar la aplicación sin tener que cambiar a código, o incluso el paquete de la aplicación (siempre que coloque el jboss-service.xml fuera de guerra / estructura ear / jar). Por ejemplo, puede crear un archivo myapp-service.xml con el siguiente contenido:
<server>
<mbean code="org.jboss.varia.property.SystemPropertiesService" name="jboss:type=Service,name=MyAppProperties">
<!-- Define the properties directly in the service.xml file-->
<attribute name="Properties">
myapp.property1=property1Value
myapp.property2=property2Value
</attribute>
<!-- You can also specify a route to another file where you define properties-->
<attribute name="URLList">
/home/myuser/txtlist.properties
</attribute>
</mbean>
</server>
Luego puede implementar este archivo directamente en JBoss, las propiedades definidas serán visibles para todas las aplicaciones desplegadas en el mismo JBoss y podrá acceder a ellas con el método estático:
String System.getProperty(String propertyName)
Entonces, si quieres acceder al valor de myapp.property1 desde tu aplicación, harías:
String property = System.getProperty("myapp.property");
Por otro lado, PropertyListener es realmente una interfaz que define un oyente que se activará cuando ocurra un evento con una propiedad. Org.jboss.util.property.PropertyAdapter es una implementación abstracta de esta interfaz. Para usarlo, debe implementar sus tres métodos (propertyAdded, propertyChanged, propertyRemoved), que el contenedor llamará cuando se agregue, cambie o elimine una propiedad, respectivamente. Esos métodos tienen un objeto PropertyEvent como parámetro, que le permite conocer la propiedad afectada.
Esta interfaz / clase es útil cuando quieres que tu aplicación haga algo cada vez que cambia una propiedad (una mala implementación sería que verificas cada cierto tiempo para un cambio de propiedad), de esta forma, cuando JBoss detecta que una propiedad ha cambiado su valor , llamará al método respectivo (que debe implementar con el comportamiento que desea).
Por ejemplo, si desea imprimir el nuevo valor de propiedad cada vez que se modifique, podría implementar el método propertyChanged de esta manera:
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());
}
}
Busque más información en la API , y para PropertyAdapter y PropertyEvent .
Todas
He visto el jboss-service.xml
que usa una clase extendida SystemPropertiesService
para hacer referencia al archivo de propiedades personalizadas. Pero todavía no entendí totalmente este tipo de uso. ¿Podría alguien darme alguna ayuda para entender cómo usar estas dos clases? Gracias.
En JBOSS 5.1 solo funciona cuando coloca las propiedades o la URL en properties-service.xml y este archivo debe ir en el directorio jboss.home / server / default / deploy.