Architecture

Architecture


Cargo offers differents ways of using it at different levels:

  • Module Java API: A Java API to parse/create/merge J2EE Modules (WAR, EAR, etc)
  • Container Java API: A Java API to start/stop/configure Java Containers and deploy modules into them.
  • Generic Java API: A Java API that sits on top of the Container API but allows writing generic code that works with any container. It consists mostly in a set of Factory classes to instantiate Container API objects by name.
  • Build and IDE plugins
    • Ant tasks: A set of Ant tasks that wrap the Generic Java API
    • Maven 3: A Maven 3 plugin

The main Container API objects are:

  • The Container is the top level interface wrapping a real physical container. Cargo supports local and remote containers. A Container is composed of a Configuration.
  • A Configuration tells Cargo how the container is to be configured (whether it should create a standalone setup, whether it should be based on an existing configuration, etc). A Configuration can be configured to install Deployables before the Container is started.
  • You can use a Deployer to hot-deploy Deployables (i.e. after the Container is started).
  • Deployables are archives to be deployed in the Container. They are WAR, EAR, EJBs, etc.