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

...

Note

This feature is not available on all containers! Currently, the only containers that support shared classpaths are:

  • All Tomcat containers
  • All JBoss JBoss 5.x to 6.1.x (inclusive)
  • All JBoss 7.x containers and all WildFly containers; by modifying your application's MANIFEST.MF file (read more on the how to put an external file in the classpath article from the JBoss website)
  • Jetty 6.x and onwards
  • All Tomcat containers

On other containers, please change the container classpath instead.

...

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();

Example using the Ant

...

tasks

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

...

3 Plugin

Configuring a Tomcat6 Tomcat 6.x 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-maven2maven3-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>

...