Configuration Manager version 1.7

Configuration Management is a common problem. It is especially a problem for customer-facing web applications that are developed in house. Since they are customer facing, you want to limit restarts of you application server for best user experience or to fulfill any service agreement the company might have. So you want your application to run for a long time without being restarted, yet the run time system assumptions do change. The company runs a promotion, and herds of users flock to your site. Your thread pools and connection pools start running low, since they were not configured for such load. Your logging start to fill up the hard drive and you would like to start logging to a different device. The service you are using to find information up has temporarily moved to an affiliate web site. You want to run batch task a bit more often for a few days, until the operations go back to normal. In all of the cases above, you would like to change the configuration without restarting your application. What that means is that you would like to have a configuration management system that supports configuration files reloading.

By using configuration manager you can streamline the way your programs handle configurations.

Features

The first release of configuration manager has limited, but workable set of feature. The features chosen are the once that used in most application, making configuration manager able to be adopted by most projects.

  • Ease of use and unit tests
  • Support for different environments: production, qa, development
  • Ability to read property files
  • Ability to read and configure log4j from configurations from both property and XML files
  • Ability to reload configurations without restarting configuration manager
  • Ability to easily integrate with external configurations by implementing ExternalRecordAdapter interface
  • Ability to read configuration from XML files (based on betwixt)
  • Couple of sample applications to that shows how to use configuration manager
  • Web interface (servlet) to control config manager based on Struts
  • Ability to read database 'property-value' tables with the direct database connection
  • Ability to read database tables
  • Ability to read configuration from JNDI
  • JMX interface to control config manager
We would love to hear from you, if any of these features (or other once you would like to propose) would make your project use configuration manager, please don't hesitate to e-mail me at henry n 73 at users dot sourceforge dot net.

Tutorials

There are several tutorials:
  • 2 minute start-up guide is your way to start using configuration manager in about 2 minutes.
  • Environment settings: dev, qa, etc. is your way to supporting different environment: production, qa, development if you need to have different configuration values for different environments.
  • Enabling JMX shows you how to enable JMX management features of the configuration manager

Sample Applications

There are currently 2 sample applications that are shipped with configuration manager, located in binary distribution under sampleapps directory. To run, please change directory to sampleapps and run app1.bat or app2.bat. These applications read the configurations and the properties from sampleapps/config, display the properties and reload them. App1 is build as an interactive demonstrations, and App2 (source code App2Properties) is most probably the way one would be refactoring old code and adding configuration manager.

Sample Web Application

There is a sample web application that is shipped with configuration manager, located in binary distribution under samplewebapp/strutswebapp directory. To run, please deploy configmanagerwebapp.war in the web container. For example in tomcat, running on the local server you will use the url http://localhost:8080/configmanagerwebapp/. You should be able to see all the configurations loaded with configuration manager, and also check details on each of the configurations. For configurations that use properties (or sub-class of Map) you will also be able to overwrite values in web ui.

Thank you for visiting configuration manager page, hope this utility will make your project easier to code!

Henry