Context
Continuum doesn't have actually a really good architecture. The underlying core can be expanded into some services related to entities.
To do that, I'd like to see "real" presentation, business, data tiers.
- the presentation tiers will be use for the ajax requests
- the business tiers will be split into some services accessible by one or more facade(s). The facade will be a POJO, an EJB, an RMI object, a web-service...
The connection between the presentation tier and the business tier must be transparent in the code, the facade type will be chosen in the conf, so continuum will can be deploy into one server or exploded on more servers. The POJO facade will be use for installation on servlet containers and of course, EJB on J2EE containers (not sure yet).
To implement this, we have few options:
- move to J2EE 5 with EJB3...
- add some new tools in Plexus like a transparent connector between tiers, annotations tools to manage classes and proxy generators...
- use Spring instead of Plexus because all is already implemented and lot of users know it
Plugins
To allow users to customize the build, we must implement the support of plugins. Each plugin will can be plugged where the users want to add it in the process. A plugin will can be activated for all builds on the instance, a project group or a project. A plugin will can be added/removed without to restart Continuum
Other code improvements
- Review and improve Exception/Error reporting such that each of the layers throws checked Exceptions specific to that layer along with helpful/sensible messages.
- Noted that continuum-store uses both
Task
andAction
implementations. I think we should be consistent and just stick to usingAction
.