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
- Maven2: A Maven 2 / 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.