Objectrad recently completed development of a Java Metadata Server for a global IT company. We expect them to introduce it to the market soon. This project illustrates the technologies we employed, and shows a little about our architectural philosophy.
The application is a metadata server, serving metadata to client applications and/or web servers. Users can define new types of metadata. The server will generate the needed code, making it capable of serving the metadata of the user-defined type.
Although focused on metadata, the application is a kind of model-based application development environment. Users define classes, associations, attributes, operations, constraints, etc., using UML-like elements. The application uses the model to generate and compile the Java source code. The result is added to a running server. Users supply needed method implementations.
Our architecture emphasized:
separation of domains, with careful management of dependencies - to provide the greatest flexibility and extensibility; the result was software that could be configured into dramatically different applications
pluggable services and features - we define interfaces for plugging in components, and use this approach for many of the application features; others can replace the features or add new features
In the diagram below, move the mouse over the architecture components to see the description of each part.
This metadata server is extremely tailorable. One configuration is for a single-user desktop application, with the metadata loaded from and saved to XML files. But in other configurations, the application supports the definition and management of metadata distributed across the enterprise. Metadata reference remote metadata; metadata can be used to define relationships among other collections of metadata. From a Java client, through JNDI, the enterprise's metadata is just held within a directory structure, with no concern over the physical location of the elements.
The configuration below is n-tier. Metadata Servers can share the same Database, or each use separate databases. The Metadata Servers act as clients in managing the links between metadata elements on separate servers. The Metadata Server supports Java clients directly, through JNDI; using a Web Server, browser clients can access the metadata.