Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Configuring Multiple WebApp Source Directory

Tip

available since jetty-6.1.12.rc2 and jetty-7.0.0pre3

It can be configured by passing Resource[], String[], or String (csv) in the constructor.
The primary resource(first in the list) is the main resource.

WEB-INF/lib and WEB-INF/classes are merged.
This basically means your dependent classes on webappA will be available in the classpath for webappB.
This feature enables webapp overlays.

Configuration in context.xml

Code Block
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">

<Configure class="org.mortbay.jetty.webapp.WebAppContext">
  <Set name="contextPath">/</Set>
  <Set name="baseResource">
    <New class="org.mortbay.resource.ResourceCollection">
      <Arg>
        <Array type="java.lang.String">
          <Item>E:/path/to/my/main/app</Item>
          <Item>/home/johndoe/path/to/my/other/source</Item>
          <Item><SystemProperty name="jetty.home" default="."/>/webapps/foo</Item>
        </Array>
      </Arg>
    </New>
  </Set>

</Configure>

Configuration in jetty-maven-plugin

Code Block
<!-- comma(or semi-colon) separated values-->
        <configuration>
          <webAppConfig>
            <contextPath>/</contextPath>
            <baseResource implementation="org.mortbay.resource.ResourceCollection">
              <resources>src/main/webapp,target/foo,E:/my/other/source,/home/johndoe/path/to/my/other/source</resources>
            </baseResource>
          </webAppConfig>
          <reload>manual</reload>
        </configuration>
Tip

When maven fails to dependency-inject overloaded resources, use:
<resourcesAsCSV>src/main/webapp,target/foo,E:/my/other/source,/home/johndoe/path/to/my/other/source</resourcesAsCSV>

Note that for the other webapp sources, you can add them to the plugin's extra scan targets for dynamic reload.

Example

Scenario:
Code Block
WebAppX:

/foo.jsp

/bar.jsp

/WEB-INF/web.xml



WebAppY:

/bar.jsp

/baz.jsp

/WEB-INF/web.xml

/WEB-INF/sitemesh.xml
Configuration:

<resources>webappY/src/main/webapp, webappX/src/main/webapp</resources>

Output:
Code Block
When Y(first resource) extends/overrides X, you get:

/foo.jsp

/bar.jsp (Y)

/baz.jsp

/WEB-INF/web.xml (Y)

/WEB-INF/sitemesh.xml

Overlays

Tip

available since jetty-6.1.12.rc3 and jetty-7.0.0pre4

When using mvn jetty:run, you don't need to configure anything.
Just add a dependency like:

Code Block
<dependency>
      <groupId>org.dojotoolkit</groupId>
      <artifactId>dojo-war</artifactId>
      <version>1.2-SNAPSHOT</version>
      <type>war</type>
    </dependency>
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty-test</artifactId>
      <version>6.1.12.rc3</version>
      <type>war</type>
    </dependency>

If configured manually, it would look like:

Code Block
<resources>src/main/webapp,/home/johndoe/path/to/dojo-war/dir,/home/johndoe/path/to/jetty-test/dir</resources>

The order of the overlays depends on how you arrange the war dependencies in your pom.xml (top to bottom)

Contact the core Jetty developers at www.webtide.com
private support for your internal/customer projects ... custom extensions and distributions ... versioned snapshots for indefinite support ... scalability guidance for your apps and Ajax/Comet projects ... development services from 1 day to full product delivery