The Obix Framework simplifies software configuration by providing a standard means, of encoding
configuration data in XML, and of loading such data into an application
so that the data can be accessed using basic Java™ objects. It provides a host of
powerful, yet simple, features that simplify the representation, and use of configuration information. These features,
to name but a few, include: the ability to represent complex configuration data (file) trees, by providing links
between configuration documents; modularization of configuration data; automatic change detection
and auto-reload of configuration data; simple integration into Java™ applications using little or no custom code;
support for enterprise scale (J2EE™) applications;
configuration event listeners; a flat learning curve; and extensibility.
The importance of software configuration cannot be overstated. It enables us to quickly change the behaviour
of software without resorting to code changes. Such behavioural changes are not limited to the mundane,
such as database connection strings, but incorporate more complex switching parameters that can be used
to alter the behaviour/logic/flow of code without resulting to compile-dependent changes.
So what does this framework offer above the traditional means of specifying software configuration
parameters? Whilst the Java™ J2SE SDK
provides standard mechanisms, such as properties files and resource bundles,
to enable the configuration of software, these lack a number of features which are required for today's
dynamic and complex business environments. The advantages of the framework over traditional
configuration mechanisms can be summarized as follows:
Obix enables the condensation of sparse, complex and rich data in structured
XML, thus ensuring the portability of the data.
It enables modularization of configuration data, thus enabling the definition of relationships
(via links/import) between configuration documents.
It provides simple API, and a host of extensions covering
and J2EE, which simplify the integration of
the framework into your application. These extensions and API, in essence, provide multiple deployment models
catering for different application environments.
- Support for, and easy integration into the Java™ Naming API.
In recognition of the dynamism of today's IT environments and the ever changing nature of requirements,
it also supports the real-time auto-detection of changes to configuration data, and the real-time
auto-reloading and re-synchronization of changed/modified configuration files.
It provides a simple plug-in mechanism, which enables application developers to tap into the framework.
This plug-in mechanism is used to develop utilities to simplify the use of a host of other open source
frameworks, e.g. initialization utilities for Log4j and
The framework is intended to serve as one-stop-shop for software configuration functionality.