パッケージ jakarta.servlet

インターフェース ServletContainerInitializer


  • public interface ServletContainerInitializer
    ライブラリ / ランタイムに Web アプリケーションの起動フェーズを通知し、それにレスポンスしてサーブレット、フィルター、リスナーの必要なプログラム登録を実行できるようにするインターフェース。

    このインターフェースの実装には、実装、拡張、アノテーションで指定されたクラス型でアノテーションが付けられたアプリケーションクラスのセットを(onStartup(java.util.Set<java.lang.Class<?>>, jakarta.servlet.ServletContext) メソッドで)受け取るために、HandlesTypes でアノテーションを付けることができます。

    このインターフェースの実装が HandlesTypes アノテーションを使用しない場合、またはアノテーションで指定されたものと一致するアプリケーションクラスがない場合、コンテナーはクラスの null セットを渡す必要があります。onStartup(java.util.Set<java.lang.Class<?>>, jakarta.servlet.ServletContext)

    アプリケーションのクラスを調べて、それらが ServletContainerInitializer HandlesTypes アノテーションで指定された条件のいずれかに一致するかどうかを確認すると、コンテナーのいずれかがクラスローディングの問題に遭遇する可能性があります。アプリケーションのオプションの JAR ファイルがありません。コンテナーは、これらの型のクラスローディング障害がアプリケーションの正常な動作を妨げるかどうかを決定する立場にないため、無視し、同時にログに記録する構成オプションを提供する必要があります。

    このインターフェースの実装は、 META-INF/services ディレクトリ内にある JAR ファイルリソースによって宣言され、このインターフェースの完全修飾クラス名で命名されている必要があり、ランタイムのサービスプロバイダールックアップを使用して検出されます。メカニズムまたは意味的にそれと同等のコンテナー固有のメカニズム。どちらの場合も、絶対順序付けから除外された Web フラグメント JAR ファイルからの ServletContainerInitializer サービスは無視する必要があり、これらのサービスが検出される順序は、アプリケーションのクラスローディング委譲モデルに従う必要があります。

    導入:
    Servlet 3.0
    関連事項:
    HandlesTypes
    • メソッドの詳細

      • onStartup

        void onStartup​(SetSE<ClassSE<?>> c,
                       ServletContext ctx)
                throws ServletException
        指定された ServletContext によって表されるアプリケーションの起動をこの ServletContainerInitializer に通知します。

        この ServletContainerInitializer がアプリケーションの WEB-INF/lib ディレクトリ内の JAR ファイルにバンドルされている場合、その onStartup メソッドは、バンドルアプリケーションの起動時に 1 回だけ呼び出されます。この ServletContainerInitializerWEB-INF/lib ディレクトリ外の JAR ファイル内にバンドルされているが、上記のように検出可能である場合、その onStartup メソッドは、アプリケーションが起動されるたびに呼び出されます。

        パラメーター:
        c - 拡張、実装、HandlesTypes アノテーションで指定されたクラス型でアノテーションが付けられたアプリケーションクラスのセット。一致がない場合、またはこの ServletContainerInitializer が持っている場合は null HandlesTypes でアノテーションされていない
        ctx - 開始され、 c に含まれるクラスが見つかった Web アプリケーションの ServletContext
        例外:
        ServletException - エラーが発生した場合