Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Jakarta-commons Wiki" 
for change notification.

The following page has been changed by EmmanuelBourg:
http://wiki.apache.org/jakarta-commons/Configuration

The comment on the change is:
Reloading is now included in the API, not need to publish a workaround anymore

------------------------------------------------------------------------------
   ||Do you have a good example, add it here!||
  ["HierarchicalXMLConfiguration Example"]
  
- = Auto-Configuration-Reloading-Class =
- 
- AndresValdez:
- I have made an Auto-Configuration-Reloading Class.
- 
-  1. This class implements the Runnable interface and inherits from 
PropertiesConfiguration.
-  2. This class also has a Singleton behavior, so there is only one 
Configuration class at time, provided every X milliseconds, read from your 
config.txt file.
- 
- == Advantages: ==
-  1.Only a big one: You can edit your configuration file at any time you want, 
and your changes will take effect immediately!!!
-  So your application will change it's behavior at runtime!! :D
- 
- 
- You can see the implementation here:
- --
- {{{
- import org.apache.commons.configuration.ConfigurationException;
- 
- import org.apache.commons.configuration.PropertiesConfiguration;
- 
- import org.apache.commons.logging.Log;
- 
- import org.apache.commons.logging.LogFactory;
- 
- 
- /**
-  * @author avaldez
-  * Esta clase contiene la configuracion obtenida desde el archivo de
-  * configuracion llamado "config.txt"
-  * Permite que el archivo de configuracion se modifique al vuelo y carga la 
nueva configuracion automaticamente
-  * momento desde el cual los nuevos threads se comportaran segun la nueva 
configuracion.
-  * La linea para delimitar cada cuantos milisegundos se lee el archivo es:
-  * "reload.config.after"
-  * 
-  * Represents a singleton.
-  */
- public class Configuration extends PropertiesConfiguration implements 
Runnable {
-     static Log log = LogFactory.getLog(Configuration.class);
- 
-     private static String configFile;
-     private static boolean goOn = true;
- 
-     static {
-         configFile = "config.txt";
-     }
- 
-     /**
-      * Holds singleton instance
-      */
-     private static Configuration instance;
- 
-     /**
-      * prevents instantiation
-      */
-     private Configuration() {
-         // prevent creation
-     }
- 
-     private Configuration(String file) throws ConfigurationException {
-         super(file);
-     }
- 
-     /**
-      * Returns the "singleton" instance.
-      @return        the singleton instance
-      */
-     static public Configuration getInstance() {
-         if (instance == null) {
-             try {
-                 instance = new Configuration(configFile);
-                 log.debug("Loaded:" + ((PropertiesConfiguration) 
instance).toString());
-             } catch (ConfigurationException e) {
-                 log.error("Error reading configuration file: " + configFile);
-             }
-         }            
-         return instance;
-     }
- 
-     public static void main(String[] args) {
-         Thread t = new Thread(Configuration.getInstance());
-         t.start();
-     }
- 
-     /* Runner
-      * @see java.lang.Runnable#run()
-      */
-     public void run() {
-         while (goOn) {
-             try {
-                 instance = new Configuration(configFile);
-                 log.debug("Loaded:" + ((PropertiesConfiguration) 
instance).toString());
-             } catch (ConfigurationException e) {
-                 log.error("Error reading configuration file: " + configFile);
-             } catch (Exception e) {
-                 log.error("Error reading configuration file: " + configFile);
-             }
- 
-             try {
-                 Thread.sleep(instance.getLong("reload.config.after"));
-             } catch (InterruptedException e) {
-                 log.error("Error reading configuration file: " + configFile);
-                 log.error(": " + e.getLocalizedMessage());
-             }
-         }
-     }
- 
-     
-   }
- }}}
- 
- 
  
  = FAQ =
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to