Class WebInfConfiguration

java.lang.Object
org.eclipse.jetty.webapp.AbstractConfiguration
org.eclipse.jetty.webapp.WebInfConfiguration
All Implemented Interfaces:
Configuration

public class WebInfConfiguration extends AbstractConfiguration
  • Field Details

  • Constructor Details

    • WebInfConfiguration

      public WebInfConfiguration()
  • Method Details

    • preConfigure

      public void preConfigure(WebAppContext context) throws Exception
      Description copied from interface: Configuration
      Set up for configuration.

      Typically this step discovers configuration resources

      Specified by:
      preConfigure in interface Configuration
      Overrides:
      preConfigure in class AbstractConfiguration
      Parameters:
      context - The context to configure
      Throws:
      Exception - if unable to pre configure
    • findAndFilterContainerPaths

      public void findAndFilterContainerPaths(WebAppContext context) throws Exception
      Find jars and directories that are on the container's classpath and apply an optional filter. The filter is a pattern applied to the full jar or directory names. If there is no pattern, then no jar or dir is considered to match. Those jars that do match will be later examined for META-INF information and annotations. To find them, examine the classloaders in the hierarchy above the webapp classloader that are URLClassLoaders. For jdk-9 we also look at the java.class.path, and the jdk.module.path.
      Parameters:
      context - the WebAppContext being deployed
      Throws:
      Exception - if unable to apply optional filtering on the container's classpath
    • findAndFilterWebAppPaths

      public void findAndFilterWebAppPaths(WebAppContext context) throws Exception
      Finds the jars that are either physically or virtually in WEB-INF/lib, and applies an optional filter to their full pathnames. The filter selects which jars will later be examined for META-INF information and annotations. If there is no pattern, then all jars are considered selected.
      Parameters:
      context - the WebAppContext being deployed
      Throws:
      Exception - if unable to find the jars or apply filtering
    • configure

      public void configure(WebAppContext context) throws Exception
      Description copied from interface: Configuration
      Configure WebApp.

      Typically this step applies the discovered configuration resources to either the WebAppContext or the associated MetaData.

      Specified by:
      configure in interface Configuration
      Overrides:
      configure in class AbstractConfiguration
      Parameters:
      context - The context to configure
      Throws:
      Exception - if unable to configure
    • deconfigure

      public void deconfigure(WebAppContext context) throws Exception
      Description copied from interface: Configuration
      DeConfigure WebApp. This method is called to undo all configuration done. This is called to allow the context to work correctly over a stop/start cycle
      Specified by:
      deconfigure in interface Configuration
      Overrides:
      deconfigure in class AbstractConfiguration
      Parameters:
      context - The context to configure
      Throws:
      Exception - if unable to deconfigure
    • cloneConfigure

      public void cloneConfigure(WebAppContext template, WebAppContext context) throws Exception
      Description copied from interface: Configuration
      Clone configuration instance.

      Configure an instance of a WebAppContext, based on a template WebAppContext that has previously been configured by this Configuration.

      Specified by:
      cloneConfigure in interface Configuration
      Overrides:
      cloneConfigure in class AbstractConfiguration
      Parameters:
      template - The template context
      context - The context to configure
      Throws:
      Exception - if unable to clone
      See Also:
    • resolveTempDirectory

      public void resolveTempDirectory(WebAppContext context) throws Exception
      Get a temporary directory in which to unpack the war etc etc. The algorithm for determining this is to check these alternatives in the order shown:

      A. Try to use an explicit directory specifically for this webapp:

      1. Iff an explicit directory is set for this webapp, use it. Set delete on exit depends on value of persistTempDirectory.
      2. Iff javax.servlet.context.tempdir context attribute is set for this webapp && exists && writeable, then use it. Set delete on exit depends on value of persistTempDirectory.

      B. Create a directory based on global settings. The new directory will be called "Jetty-"+host+"-"+port+"__"+context+"-"+virtualhost+"-"+randomdigits+".dir"

      If the user has specified the context attribute org.eclipse.jetty.webapp.basetempdir, the directory specified by this attribute will be the parent of the temp dir created. Otherwise, the parent dir is ${java.io.tmpdir}. Set delete on exit depends on value of persistTempDirectory.

      Parameters:
      context - the context to resolve the temp directory from
      Throws:
      Exception - if unable to resolve the temp directory
    • asFile

      private File asFile(Object fileattr)
      Given an Object, return File reference for object. Typically used to convert anonymous Object from getAttribute() calls to a File object.
      Parameters:
      fileattr - the file attribute to analyze and return from (supports type File, Path, and String).
      Returns:
      the File object if it can be converted otherwise null.
    • makeTempDirectory

      public void makeTempDirectory(File parent, WebAppContext context) throws Exception
      Throws:
      Exception
    • configureTempDirectory

      public void configureTempDirectory(File dir, WebAppContext context)
    • ensureTempDirUsable

      private void ensureTempDirUsable(File dir)
    • unpack

      public void unpack(WebAppContext context) throws IOException
      Throws:
      IOException
    • getCanonicalNameForWebAppTmpDir

      public static String getCanonicalNameForWebAppTmpDir(WebAppContext context)
      Create a canonical name for a webapp temp directory.

      The form of the name is:

      "jetty-"+host+"-"+port+"-"+resourceBase+"-_"+context+"-"+virtualhost+"-"+randomdigits+".dir"
      host and port uniquely identify the server context and virtual host uniquely identify the webapp randomdigits ensure every tmp directory is unique
      Parameters:
      context - the context to get the canonical name from
      Returns:
      the canonical name for the webapp temp directory
    • getResourceBaseName

      protected static String getResourceBaseName(Resource resource)
    • findClassDirs

      protected List<Resource> findClassDirs(WebAppContext context) throws Exception
      Throws:
      Exception
    • findJars

      protected List<Resource> findJars(WebAppContext context) throws Exception
      Look for jars that should be treated as if they are in WEB-INF/lib
      Parameters:
      context - the context to find the jars in
      Returns:
      the list of jar resources found within context
      Throws:
      Exception - if unable to find the jars
    • findWebInfLibJars

      protected List<Resource> findWebInfLibJars(WebAppContext context) throws Exception
      Look for jars in WEB-INF/lib
      Parameters:
      context - the context to find the lib jars in
      Returns:
      the list of jars as Resource, or null
      Throws:
      Exception - if unable to scan for lib jars
    • findExtraClasspathJars

      protected List<Resource> findExtraClasspathJars(WebAppContext context) throws Exception
      Get jars from WebAppContext.getExtraClasspath as resources
      Parameters:
      context - the context to find extra classpath jars in
      Returns:
      the list of Resources with the extra classpath, or null if not found
      Throws:
      Exception - if unable to find the extra classpath jars
    • findWebInfClassesDir

      protected Resource findWebInfClassesDir(WebAppContext context) throws Exception
      Get WEB-INF/classes dir
      Parameters:
      context - the context to look for the WEB-INF/classes directory
      Returns:
      the Resource for the WEB-INF/classes directory
      Throws:
      Exception - if unable to find the WEB-INF/classes directory
    • findExtraClasspathDirs

      protected List<Resource> findExtraClasspathDirs(WebAppContext context) throws Exception
      Get class dirs from WebAppContext.getExtraClasspath as resources
      Parameters:
      context - the context to look for extra classpaths in
      Returns:
      the list of Resources to the extra classpath
      Throws:
      Exception - if unable to find the extra classpaths
    • isGlobReference

      private boolean isGlobReference(String token)
    • isFileSupported

      private boolean isFileSupported(Resource resource)