/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package jakarta.servlet;

import java.util.Set;

ServletContainerInitializers (SCIs) are registered via an entry in the file META-INF/services/jakarta.servlet.ServletContainerInitializer that must be included in the JAR file that contains the SCI implementation.

SCI processing is performed regardless of the setting of metadata-complete. SCI processing can be controlled per JAR file via fragment ordering. If absolute ordering is defined, then only the JARs included in the ordering will be processed for SCIs. To disable SCI processing completely, an empty absolute ordering may be defined.

SCIs register an interest in annotations (class, method or field) and/or types via the HandlesTypes annotation which is added to the class.

Since:Servlet 3.0
/** * ServletContainerInitializers (SCIs) are registered via an entry in the * file META-INF/services/jakarta.servlet.ServletContainerInitializer that must be * included in the JAR file that contains the SCI implementation. * <p> * SCI processing is performed regardless of the setting of metadata-complete. * SCI processing can be controlled per JAR file via fragment ordering. If * absolute ordering is defined, then only the JARs included in the ordering * will be processed for SCIs. To disable SCI processing completely, an empty * absolute ordering may be defined. * <p> * SCIs register an interest in annotations (class, method or field) and/or * types via the {@link jakarta.servlet.annotation.HandlesTypes} annotation which * is added to the class. * * @since Servlet 3.0 */
public interface ServletContainerInitializer {
Receives notification during startup of a web application of the classes within the web application that matched the criteria defined via the HandlesTypes annotation.
Params:
  • c – The (possibly null) set of classes that met the specified criteria
  • ctx – The ServletContext of the web application in which the classes were discovered
Throws:
/** * Receives notification during startup of a web application of the classes * within the web application that matched the criteria defined via the * {@link jakarta.servlet.annotation.HandlesTypes} annotation. * * @param c The (possibly null) set of classes that met the specified * criteria * @param ctx The ServletContext of the web application in which the * classes were discovered * * @throws ServletException If an error occurs */
void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException; }