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:
On other containers, please change the container classpath instead. |
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.
Starting a WAR on Tomcat 6.x with some additional classpath entries:
LocalConfiguration configuration = new Tomcat6xStandaloneLocalConfiguration("target/tomcat6x"); Deployable war = new WAR("target/war/grails-example-without-libs.war"); configuration.addDeployable(war); InstalledLocalContainer container = new Tomcat6xInstalledLocalContainer(configuration); 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(); |
Starting a WAR on Tomcat 6.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> <configuration> <deployable type="war" file="target/war/grails-example-without-libs.war"/> </configuration> </cargo> |