This page last changed on Jan 28, 2011 by alitokmen.

Mission

Cargo is a thin wrapper that allows you to manipulate Java EE containers in a standard way.  

Tools

Cargo provides the following Tools and APIs:

  • A Java API to start/stop/configure Java Containers and deploy modules into them.
  • A Java API to parse/create/merge Java EE Modules
  • Ant tasks and Maven 2/Maven 3 plugins.
    • Intellij IDEA and Netbeans plugins are in the sandbox.

Usage

Cargo is often used to deploy applications to containers from ant or maven builds.  Cargo can install the container and dependencies needed for your deployment as well.   Click here for a Maven 2 quick start!

For more use cases, please check the utilisation page.

Development Status

Current Versions

click in the status column to get release notes:

Version Status Comments
1.0.6 Released on 20/01/11

All released versions are available here.

Container Support

List of supported containers and the extensions that are implemented for each container (Java API, Ant tasks and Maven2/Maven3 plugin). The specified version is the version of the associated Cargo module where the feature was first made available (for example 0.2 for the Maven2 plugin means version 0.2 of the Cargo Maven 2 extension release). Click on a container's name to see a detailed list of features it supports.

Container Java API (version) Ant tasks (version) Maven 2 plugin (version)
Geronimo 1.x
0.8

0.8

0.8
Geronimo 2.x
1.0.4

1.0.4

1.0.4
Glassfish 2.x
1.0.1

1.0.1

1.0.1
Glassfish 3.x
1.0.1

1.0.1

1.0.1
JBoss 3.x
0.7

0.7

0.7
JBoss 4.x
0.7

0.7

0.7
JBoss 4.2.x
1.0

1.0

1.0
JBoss 5.x
1.0

1.0

1.0
JBoss 5.1.x
1.0.1

1.0.1

1.0.1
JBoss 6.x
1.0.1

1.0.1

1.0.1
Jetty 4.x
0.1

1.0

0.2
Jetty 5.x
0.8

1.0

0.2
Jetty 6.x
0.8

1.0

0.2
Jetty 7.x
1.0.1

1.0.1

1.0.1
jo! 1.x
0.5

0.5

0.1
JOnAS 4.x
1.0

1.0

1.0
JOnAS 5.x
1.0

1.0

1.0
JRun 4.x
1.0

1.0

1.0
Oc4J 9.x
0.3

0.3

0.3
Oc4j 10.x
1.0

1.0

1.0
Resin 2.x
0.1

0.1

0.1
Resin 3.x
0.1

0.1

0.1
Tomcat 4.x
0.1

0.1

0.1
Tomcat 5.x
0.1

0.1

0.1
Tomcat 6.x
1.0

1.0

1.0
Tomcat 7.x
1.0.2

1.0.2

1.0.2
WebLogic 8.x
0.3

0.3

0.1
WebLogic 9.x
1.0

1.0

1.0
WebLogic 10.x
1.0

1.0

1.0
WebLogic 10.3.x
1.0

1.0

1.0


We also encourage you to report success and failures on different versions of those containers in the Tested on section. Moreover, some containers are tested dialy on the Codehaus Cargo Continous Integration System; for these the container's page also shows which version is tested.

News

CARGO 1.1.0

Hi CARGO enthusiasts;

It has been more than usual since we did not come up with any new versions, and it is for a good reason: we have been working on CARGO's version 1.1.0. As usual, we have many bug fixes; but most notably we have very interesting new features.

Some of the interesting new features would perhaps be the following:

  • The Maven2/Maven3 ZipUrlInstaller now reuses the proxy settings from Maven (CARGO-517)
  • Container distributions can now be directory installed from a Maven2/Maven3 artifact definition (CARGO-449)
  • ZipUrlInstaller now has different download and extraction directories (CARGO-907), and the default extraction directory for the Maven2/Maven3 plugin is the project's build directory (CARGO-908).
    • This way, all containers can use the default directories of the ZipUrlInstaller (CARGO-895, CARGO-959 and others).
  • The CARGO ANT tasks can now do remote deployment (CARGO-962)
  • Deployable.pingUrl now supports authentication (CARGO-813)
  • All deployment methods now accept a DeployableMonitor parameter (CARGO-414)
  • The steps to follow in order to remotely debug a container is now documented (CARGO-447); you can check http://cargo.codehaus.org/Debugging for details

As for some of the improvements:

  • Remote deployment on Jetty is now much faster (CARGO-884)
  • Remote deployers can now change the WAR context (CARGO-331)
  • The Container.stop method now waits for the whole server to stop (CARGO-918), which results in more stable tests if containers are started and stopped one after the other.
  • Different timeouts can be defined when starting and stopping a container (CARGO-713)
  • The JBoss remote deployer can now deploy to clusters (CARGO-899)
  • Tomcat contexts' reloadable parameter can now be configured (CARGO-461)
  • TomcatLocalInstalledLocalDeployer.shouldCopyWars() has been made configurable (CARGO-963)
  • Container pages now include a link to the downloadable container used for tests (CARGO-313) as well as a link to the CI
  • The Maven archetypes now use the failsafe plugin (CARGO-883)

And some fixes:

  • CARGO now takes into account the encoding of your configuration and resource files (CARGO-900, CARGO-903 and CARGO-945)
  • The GlassFish container's asadmin wrapper now correctly reports back errors (CARGO-914)
  • The JBoss 4.x remote deployer now works with large files (CARGO-892)
  • The Tomcat 7.x container now supports the latest Tomcat 7.x releases (CARGO-923)
  • cargo:start does not fail with some versions of JBoss deployables when there's no internet connection (CARGO-956)
  • The shared and extra classpath functionalities have been fixed (CARGO-928)
  • Various fixes around Windows-configurations: CARGO-934, CARGO-893 and CARGO-939

And, finally, some major changes that you probably won't notice (but which are one of the reasons why we changed the version number to 1.1.0):

  • CARGO can now be built with Maven3 (CARGO-789), which this also results in the removal of the Maven1 support (CARGO-793).
  • All the code now uses Java 5 APIs and style (CARGO-656), moreover we have enforced the use of generics. We have also added checkstyle to all the code, including tests (CARGO-891).
  • Java API users can now change the JVM launching method they like (CARGO-898), for example Eclipse instead of the default ANT.

... as well as some major changes you should take a note of:

  • The default value for the wait parameter on the ANT and Maven2/Maven3 plugins is now false (CARGO-896)
    • This means you will need to run mvn cargo:start -Dwait=true when you want to run manual tests.
    • This change in fact renders the creation of automated integration tests easier.
  • ZipUrlInstaller now has different download and extraction directories (CARGO-907), which makes the installDir property obsolete: it is replaced by downloadDir and extractDir, the old property set them both but will probably removed in CARGO 1.2.0.
  • TomcatPropertySet.MANAGER_URL has been deprecated in favor of RemotePropertySet.URI (CARGO-964).
  • TomcatLocalInstalledLocalDeployer.shouldCopyWars() is set to true by default (used to be false) (CARGO-963)
  • Deployable.isExpanded() and Deployable.isExpanded*() have been consolidated, obsoleting the Deployable.isExpanded*() methods (CARGO-902).
  • All API methods for copying configuration and resource files that specify no encoding are deprecated (CARGO-900, CARGO-903 and CARGO-945)
  • AbstractCopyingInstalledLocalDeployer.setShouldDeployExpanded*s() and AbstractCopyingInstalledLocalDeployer.setShouldDeployExpanded() have been consolidated, obsoleting the AbstractCopyingInstalledLocalDeployer.setShouldDeployExpanded*() methods.

For a full list, you can always check the release notes: http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=10730&version=16436 -we have more than 80 changes!

To use this new version:

  • Users of the Java API and/or ANT tasks can download the CARGO uberjar and ANT tasks from the download page: http://cargo.codehaus.org/Downloads
  • Maven2/Maven3 users simply need to change the plugin's <version> to 1.1.0, and Maven2/Maven3 will download the new version automatically.

Please share your good (and bad) findings on the user@cargo.codehaus.org mailing list.

Enjoy!

CARGO 1.0.6 is now available

Hello CARGO lovers

CARGO version 1.0.6 is now ready! As with all previous versions of CARGO, we have new features.

  • CARGO can now deploy to remote GlassFish 3.x servers (see CARGO-828)! That support is based on the brand-new JSR88 Deployer.
  • The abstract JSR88 deployer for CARGO, which closes one of the oldest JIRA tickets: CARGO-146. This will ease a lot the implementation of any JSR88-compliant container for CARGO.

Moreover, this version being a maintenance release, it also ships with the fix for the following issues:

  • (CARGO-581) - A '/' in context path gets converted to %20
  • (CARGO-875) - java.lang.StringIndexOutOfBoundsException: String index out of range: 5 at createJBossFilterChain(JBoss51xStandaloneLocalConfiguration.java:56)
  • (CARGO-877) - Remote deployment on Jetty 7.1.6 using cargo-jetty-7-and-onwards-deployer fails
  • (CARGO-879) - Cannot set JVM arguments in GlassFish
  • (CARGO-880) - cargo-maven2-plugin - blank property value in container systemProperties causes NullPointerException

This version is also expected to be the last 1.0.x version of CARGO. Indeed, we will then be focusing our efforts on CARGO 1.1.0, which will have many changes and drop of dusty parts (such as the Maven1 plugin).

Enjoy!


architecture.jpg (image/jpeg)
architecture.jpg (image/jpeg)
access-layers.jpg (image/jpeg)
access-layers.jpg (image/jpeg)
access-layers.jpg (image/jpeg)
Document generated by Confluence on May 05, 2011 19:53