Interface Configuration

All Known Implementing Classes:
AbstractConfiguration, AnnotationConfiguration, AnnotationConfiguration, AntMetaInfConfiguration, AntWebInfConfiguration, AntWebXmlConfiguration, CdiConfiguration, Configuration.Wrapper, EnvConfiguration, FragmentConfiguration, JaasConfiguration, JakartaWebSocketConfiguration, JaspiConfiguration, JettyWebSocketClientConfiguration, JettyWebSocketConfiguration, JettyWebXmlConfiguration, JmxConfiguration, JndiConfiguration, JspConfiguration, MavenMetaInfConfiguration, MavenQuickStartConfiguration, MavenWebInfConfiguration, MetaInfConfiguration, OSGiMetaInfConfiguration, OSGiWebInfConfiguration, PlusConfiguration, QuickStartConfiguration, QuickStartGeneratorConfiguration, ServletsConfiguration, WebAppConfiguration, WebInfConfiguration, WebXmlConfiguration

public interface Configuration
A pluggable Configuration for WebAppContexts.

A WebAppContext is configured by the application of one or more Configuration instances. Typically each implemented Configuration is responsible for an aspect of the servlet specification (eg WebXmlConfiguration, FragmentConfiguration, etc.) or feature (eg JakartaWebSocketConfiguration, JmxConfiguration etc.)

Configuration instances are discovered by the Configurations class using either the ServiceLoader mechanism or by an explicit call to Configurations.setKnown(String...). By default, all Configurations that do not return false from isEnabledByDefault() are applied to all WebAppContexts within the JVM. However a Server wide default Configurations collection may also be defined with Configurations.setServerDefault(org.eclipse.jetty.server.Server). Furthermore, each individual Context may have its Configurations list explicitly set and/or amended with WebAppContext.setConfigurations(Configuration[]), WebAppContext.addConfiguration(Configuration...) or WebAppContext.getConfigurations().

Since Jetty-9.4, Configurations are self ordering using the getDependencies() and getDependents() methods for a TopologicalSort initiated by Configurations.sort() when a WebAppContext is started. This means that feature configurations (eg JndiConfiguration, JaasConfiguration} etc.) can be added or removed without concern for ordering.

Also since Jetty-9.4, Configurations are responsible for providing getServerClasses() and getSystemClasses() to configure the WebAppClassLoader for each context.

  • Field Details

  • Method Details

    • isAvailable

      default boolean isAvailable()
      Returns:
      True if the feature this configuration represents is available and has all its dependencies.
    • replaces

      default Class<? extends Configuration> replaces()
      Get a class that this class replaces/extends. If this is added to Configurations collection that already contains a configuration of the replaced class or that reports to replace the same class, then it is replaced with this instance.
      Returns:
      The class this Configuration replaces/extends or null if it replaces no other configuration
    • getDependencies

      default Collection<String> getDependencies()
      Get known Configuration Dependencies.
      Returns:
      The names of Configurations that TopologicalSort must order before this configuration.
    • getDependents

      default Collection<String> getDependents()
      Get known Configuration Dependents.
      Returns:
      The names of Configurations that TopologicalSort must order after this configuration.
    • getSystemClasses

      default ClassMatcher getSystemClasses()
      Get the system classes associated with this Configuration.
      Returns:
      ClassMatcher of system classes.
    • getServerClasses

      default ClassMatcher getServerClasses()
      Get the system classes associated with this Configuration.
      Returns:
      ClassMatcher of server classes.
    • preConfigure

      void preConfigure(WebAppContext context) throws Exception
      Set up for configuration.

      Typically this step discovers configuration resources. Calls to preConfigure may alter the Configurations configured on the WebAppContext, so long as configurations prior to this configuration are not altered.

      Parameters:
      context - The context to configure
      Throws:
      Exception - if unable to pre configure
    • configure

      void configure(WebAppContext context) throws Exception
      Configure WebApp.

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

      Parameters:
      context - The context to configure
      Throws:
      Exception - if unable to configure
    • postConfigure

      void postConfigure(WebAppContext context) throws Exception
      Clear down after configuration.
      Parameters:
      context - The context to configure
      Throws:
      Exception - if unable to post configure
    • deconfigure

      void deconfigure(WebAppContext context) throws Exception
      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
      Parameters:
      context - The context to configure
      Throws:
      Exception - if unable to deconfigure
    • destroy

      void destroy(WebAppContext context) throws Exception
      Destroy WebApp. This method is called to destroy a webappcontext. It is typically called when a context is removed from a server handler hierarchy by the deployer.
      Parameters:
      context - The context to configure
      Throws:
      Exception - if unable to destroy
    • isEnabledByDefault

      boolean isEnabledByDefault()
      Returns:
      true if configuration is enabled by default
    • abort

      boolean abort(WebAppContext context)
      Returns:
      true if configuration should be aborted