Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Definition

Excerpt

How to configure the classpath of the application without changing the container's own classpath

Info

This feature is only available for local containers

...

Starting a WAR on Tomcat 6.x with some additional classpath entries:

Code Block
java
java

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:

Code Block
xml
xml

<cargo containerId="tomcat6x" home="/srv/tomcat/catalina-home" action="start">
  <sharedClasspath>
    <fileset dir="/opt/grails">
      <include name="*.jar"/>
    </fileset>
  </sharedClasspath>
  <configuration home="target/tomcat6x">
    <deployable type="war" file="target/war/grails-example-without-libs.war"/>
  </configuration>
</cargo>

Example using the Maven Plugin

...

Configuring a Tomcat6 container with a com.foo bar-api-1.0.jar dependency provided using the shared classpath:

Code Block
xml
xml

[...]
<dependencies>
  <dependency>
    <groupId>com.foo</groupId>
    <artifactId>bar-api</artifactId>
    <scope>provided</scope>
    <version>1.0</version>
  </dependency>
</dependencies>
[...]
<plugin>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-maven2-plugin</artifactId>
  <configuration>
    <container>
      <containerId>tomcat6x</containerId>
      [...]
      <dependencies>
        <dependency>
          <groupId>com.foo</groupId>
          <artifactId>bar-api</artifactId>
          <classpath>shared</classpath>
        </dependency>
      </dependencies>
    </container>
    [...]
  </configuration>
</plugin>