Alternate Docroots in Web Applications

Alternate Docroots in Web Applications

Alternate Docroots in Web Applications

    GlassFish v2 Build 40 adds support for alternate docroots to web applications. Previously, support for alternate docroots was limited to virtual servers.

    Alternate docroots allow web applications to serve requests for certain resources from outside their own docroot, based on whether those requests match one (or more) of the URI patterns of the web application's alternate docroots.

    This means that web applications no longer need to bundle all their resources. Instead, part of their resources may be outsourced into server directories outside the web application's docroot, so-called alternate docroots, where they may be shared with other web applications.

    If a request matches an alternate docroot's URI pattern, it will be mapped to the alternate docroot by appending the request URI (minus the web application's context root!) to the alternate docroot's physical location (directory).

    The URI patterns of alternate docroots of web applications support exact, path prefix, and extension matches, just like their counterparts for virtual servers. If a request matches multiple URI patterns, the alternate docroot is determined according to the following precedence order:

    1. Exact match
    2. Longest path match
    3. Extension match

    Alternate docroots of web applications are configured as sun-web.xml properties, using the same syntax as alternate docroots for virtual servers.

    Example: The following sun-web.xml specifies 3 alternate docroots:

    
    <sun-web-app>
      <property name="alternatedocroot_1" value="from=/my.jpg dir=/srv/images/jpg"/>
      <property name="alternatedocroot_2" value="from=\*.jpg dir=/srv/images/jpg"/>
      <property name="alternatedocroot_3" value="from=/jpg/\* dir=/src/images"/>
    </sun-web-app>
    

    The value of each alternate docroot has two name-value components: The first component (with name from) specifies the alternate docroot's URI pattern as its value, and the second component (with name dir) specifies the alternate docroot's physical location (directory) as its value.

    In this example, the URI pattern of the first alternate docroot uses an exact match, whereas the URI patterns of the 2nd and 3rd alternate docroots use extension and path prefix matches, respectively.

    Assume the above sun-web.xml belongs to a web application deployed at http://<host>:<port>/myapp.

    The first alternate docroot will cause any requests with this URL:

    
      http://<host>:<port>/myapp/my.jpg
    
    to be mapped to this resource:
    
      /svr/images/jpg/my.jpg
    

    while the 2nd alternate docroot will cause any requests with a \*.jpg suffix, as in:

    
      http://<host>:<port>/myapp/\*.jpg
    

    to be served from this physical location:

    
      /svr/images/jpg
    

    whereas the 3rd alternate docroot will cause any requests whose URI starts with /myapp/jpg/, as in:

    
      http://<host>:<port>/myapp/jpg/\*
    

    to be served from the same directory as the 2nd alternate docroot.

    For example, the 2nd alternate docroot maps this request:

    
      http://<host>:<port>/myapp/abc/def/my.jpg
    

    to:

    
      /srv/images/jpg/abc/def/my.jpg
    

    and the 3rd alternate docroot maps:

    
      http://<host>:<port>/myapp/jpg/abc/resource
    

    to:

    
      /srv/images/jpg/abc/resource
    

    If a request does not match any of the target web application's alternate docroots, or if the target web application does not specify any alternate docroots, the request will be served from the web application's standard docroot, as usual.

Comments:

That's great! Thank you for the heads up Jan.

Posted by jesse on March 22, 2007 at 01:40 PM PDT #

Does this also work with Enterprise Applications?

I am running Liferay Enterprise Portal as an Enterprise Application under Glassfish.

It runs from "/"
and I want to have several virtual directories beside it.

Is this possible at all?

Posted by Vangel Ajanovski on August 30, 2007 at 05:07 PM PDT #

I cannot get this to work. I have a web app deployed at /opt/pc/docs/www and I have a folder with content at /opt/pc/docs/config as well. I have an alternatedocroot configured as:

"alternatedocroot_1" value="from=/config/\* dir=/opt/pc/docs"

I get a 404 and the logs for my app are outputting this:
file_name:/opt/pc/docs/www/config/DBFrames.dbml

Can you please advise?

Posted by DavidD on January 16, 2008 at 03:16 PM PST #

Cool feature!

Is the "alternatedocroot_X" a required naming convention -- or just an example nme?

Posted by Byron Nevins on February 20, 2008 at 12:40 AM PST #

Post a Comment:
  • HTML Syntax: NOT allowed
About

jluehe

Search

Categories
Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today