Definition
How to configure the classpath of the application without changing the container's own classpath
This feature is only available for local containers
This feature is not available on all containers! Currently, the only containers that support shared classpaths are:
- All Tomcat containers
- All JBoss containers
On other container, please change the container classpath instead.
Explanation
This topic is not about the classpath requirements to run Cargo (see the Installation page for this); it's about configuring the classpath for the application being executed on a container.
Some environments may require you to add some libraries to your application, without exposing them to the server itself. This concept is called a Shared Classpath.
Example using the Java API
Here is an example adding a series of common application libraries to the shared classpath:
InstalledLocalContainer container = new Tomcat6xInstalledLocalContainer( new Tomcat6xStandaloneLocalConfiguration("target/tomcat6x")); container.setHome("/srv/tomcat/catalina-home"); List<String> jars = new List<String>(); for (File jar : new File("/opt/grails").listFiles()) { if (jar.isFile()) { jars.add(jar.getAbsolutePath()); } } container.setSharedClasspath(jars.toArray()); container.start();
Example using the Ant API
Starting Orion 1.x with some additional classpath entries:
<cargo containerId="tomcat6x" home="/srv/tomcat/catalina-home" action="start"> <sharedClasspath> <fileset dir="/opt/grails"> <include name="*.jar"/> </fileset> </sharedClasspath> </cargo>