Overview

This project is a simple IoC framework written in Java, to solve the common problem in every long running (server) application: the configuration is evolving over the time.

The traditional (*nix) approach is to stop the app, edit some config file, and restart. A bit more modern approach is to incorporate some administration console in the application, and persist the configuration manually with a custom - and error prone - code.

In Java, there is a standard API for remote administration (JMX) , however, currently as far as I know, there isnt exists any "JMX server" or JMX enabled framework which helps the developer to persist automaticly the modified config. (And of course ensure, that if the stored configuration changed by the user, the components get reconfigured automaticly - in a transparent way. Basicly this is the goal of this project ... to develop this kind of system ! :)

Project Status

Usable, but still evolving.

Features

  • Component dependency resolving and validating.
  • Constructor based component configuration.
  • Setter based service lookup.
  • Four type of component dependency:
    • required:'A' component can specify, that it's requires a valid 'B' component, and the container calls the approciate setter method of A.
    • optional:'A' component can specify, that if there is a 'B' component, than call the setter method.
    • before'A' component can specify, that if there is both 'A' and 'B' component in the startup profile, then 'A' will be started before 'B'.
    • after'A' component can specify, that if there is both 'A' and 'B' component in the startup profile, then 'A' will be started after 'B'.
  • Optional polling of the configuration files, and transparent refresh of the config beans.
  • Runtime selection of configuration profiles: for example at startup it is possible to enable/disable a group of components, with one switch.

Feedback

Your feedback is welcome.