クラス FactoryFinder
FactoryFinder は、Jakarta Faces API で指定されたすべてのファクトリオブジェクトの標準検出アルゴリズムを実装します。指定されたファクトリクラス名について、対応する実装クラスが次のアルゴリズムに基づいて検索されます。アイテムは、検索の優先順位の高い順にリストされています。
webapp の
WEB-INFディレクトリにバンドルされている Jakarta Faces 構成ファイルに、指定されたファクトリクラス名のfactoryエントリが含まれている場合、そのファクトリが使用されます。jakarta.faces.CONFIG_FILESServletContext初期化パラメーターで指定された Jakarta Faces 構成ファイルに、指定されたファクトリクラス名のfactoryエントリが含まれている場合、それらの injectionProvider が使用され、最後のエントリが優先されます。ServletContextのリソースパス上の jar のMETA-INFディレクトリにバンドルされている Jakarta Faces 構成ファイルがある場合、それらのファイル内の指定されたファクトリクラス名のfactoryエントリが使用され、最後のエントリが優先されます。META-INF/services/{factory-class-name}リソースが呼び出し元アプリケーションの Web アプリケーションクラスローダーに表示されている場合 (通常は、JAR ファイルのマニフェストに存在する injectionProvider として)、その最初の行が読み取られ、使用するファクトリ実装クラスの名前であると見なされます。上記の手順のいずれも一致しない場合、Jakarta Faces 実装固有のクラスが使用されます。
上記のいずれかの手順で見つかった injectionProvider のいずれかに、引数の型が抽象ファクトリクラスである 1 つの引数コンストラクターがある場合、そのコンストラクターが呼び出され、前の一致がコンストラクターに渡されます。例: コンテナーベンダーが FacesContextFactory の実装を提供し、Web アプリケーション ClassLoader の jar の META-INF/services/jakarta.faces.context.FacesContextFactory でそれを識別したとします。また、コンテナーベンダーによって提供されたこの実装には、FacesContextFactory インスタンスを受け取る 1 つの引数コンストラクターがあったとします。FactoryFinder システムは、その 1 つの引数コンストラクターを呼び出し、Jakarta Faces 実装によって提供された FacesContextFactory の実装を渡します。
Factory 実装が適切な 1 つの引数のコンストラクターを提供しない場合、正常にインスタンス化するには、引数のないコンストラクターを提供する必要があります。
ファクトリ実装クラスの名前が見つかると、呼び出し元アプリケーションの Web アプリケーションクラスローダーがこのクラスをロードするようにリクエストされ、クラスの対応するインスタンスが作成されます。このルールの副作用は、Jakarta Server Faces 実装が Web アプリケーションに含まれているか、共有ライブラリのコンテナーの機能を通じて表示されるかに関係なく、各 Web アプリケーションが各ファクトリクラスの独自のインスタンスを受け取ることです。
フィールド概要
フィールド修飾子と型フィールド説明static final StringSEApplicationFactoryクラス名のプロパティ名。static final StringSEClientWindowFactoryクラス名のプロパティ名。static final StringSEExceptionHandlerFactoryクラス名のプロパティ名。static final StringSEExternalContextFactoryクラス名のプロパティ名。static final StringSEFaceletCacheFactoryクラス名のプロパティ名。static final StringSEFacesContextFactoryクラス名のプロパティ名。static final StringSEFlashFactoryクラス名のプロパティ名。static final StringSEFlowHandlerFactoryクラス名のプロパティ名。static final StringSELifecycleFactoryクラス名のプロパティ名。static final StringSEPartialViewContextFactoryクラス名のプロパティ名。static final StringSERenderKitFactoryクラス名のプロパティ名。static final StringSESearchExpressionContextクラス名のプロパティ名。static final StringSETagHandlerDelegateクラス名のプロパティ名。static final StringSEViewDeclarationLanguageクラス名のプロパティ名。static final StringSEVisitContextFactoryクラス名のプロパティ名。方法の概要
修飾子と型メソッド説明static ObjectSEgetFactory(StringSE factoryName) クラスの説明で説明されている検出アルゴリズムに基づいて、指定された Jakarta Faces ファクトリクラスの適切な実装クラスの Web アプリケーションごとのインスタンスを(必要に応じて)作成して返します。static void呼び出し元の Web アプリケーションのクラスローダーに関連付けられているファクトリインスタンスへの参照をすべて解放します。static voidsetFactory(StringSE factoryName, StringSE implName) このメソッドは、一致を検索するときにgetFactory(java.lang.String)がこのマッピングを見つけるように、引数factoryName/implNameマッピングを格納します。
フィールドの詳細
APPLICATION_FACTORY
ApplicationFactoryクラス名のプロパティ名。- 関連事項:
CLIENT_WINDOW_FACTORY
ClientWindowFactoryクラス名のプロパティ名。- 導入:
- 2.2
- 関連事項:
EXCEPTION_HANDLER_FACTORY
ExceptionHandlerFactoryクラス名のプロパティ名。- 関連事項:
EXTERNAL_CONTEXT_FACTORY
ExternalContextFactoryクラス名のプロパティ名。- 関連事項:
FACES_CONTEXT_FACTORY
FacesContextFactoryクラス名のプロパティ名。- 関連事項:
FACELET_CACHE_FACTORY
FaceletCacheFactoryクラス名のプロパティ名。- 導入:
- 2.1
- 関連事項:
FLASH_FACTORY
FlashFactoryクラス名のプロパティ名。- 導入:
- 2.2
- 関連事項:
FLOW_HANDLER_FACTORY
FlowHandlerFactoryクラス名のプロパティ名。- 導入:
- 2.2
- 関連事項:
PARTIAL_VIEW_CONTEXT_FACTORY
PartialViewContextFactoryクラス名のプロパティ名。- 関連事項:
VISIT_CONTEXT_FACTORY
VisitContextFactoryクラス名のプロパティ名。- 関連事項:
LIFECYCLE_FACTORY
LifecycleFactoryクラス名のプロパティ名。- 関連事項:
RENDER_KIT_FACTORY
RenderKitFactoryクラス名のプロパティ名。- 関連事項:
VIEW_DECLARATION_LANGUAGE_FACTORY
ViewDeclarationLanguageクラス名のプロパティ名。- 関連事項:
TAG_HANDLER_DELEGATE_FACTORY
TagHandlerDelegateクラス名のプロパティ名。- 関連事項:
SEARCH_EXPRESSION_CONTEXT_FACTORY
SearchExpressionContextクラス名のプロパティ名。- 関連事項:
方法の詳細
getFactory
クラスの説明で説明されている検出アルゴリズムに基づいて、指定された Jakarta Faces ファクトリクラスの適切な実装クラスの Web アプリケーションごとのインスタンスを(必要に応じて)作成して返します。
標準の injectionProvider と Jakarta Faces のラッパーはすべて、インターフェース
FacesWrapperを実装しています。返されたObjectが標準の injectionProvider の 1 つの実装である場合、それをFacesWrapperのインスタンスにキャストし、そのインスタンスでFacesWrapper.getWrapped()を呼び出すことは有効である必要があります。- パラメーター:
factoryName- 実装インスタンスがリクエストされる Jakarta Faces ファクトリの完全修飾名- 戻り値:
- 見つかったファクトリインスタンス
- 例外:
FacesException- Web アプリケーションクラスローダーを識別できない場合FacesException- 構成されたファクトリ実装クラスのインスタンスをロードできない場合FacesException- 構成されたファクトリ実装クラスのインスタンスをインスタンス化できない場合IllegalArgumentExceptionSE-factoryNameが標準の Jakarta Faces ファクトリ名を識別しない場合IllegalStateExceptionSE- 指定されたファクトリ名に設定されたファクトリ実装クラスがない場合NullPointerExceptionSE-factorynameが null の場合
setFactory
このメソッドは、一致を検索するときに
getFactory(java.lang.String)がこのマッピングを見つけるように、引数factoryName/implNameマッピングを格納します。この
factoryNameのファクトリを探してgetFactory()がすでに呼び出されている場合、この方法は効果がありません。このメソッドは、Faces 構成ファイルの解析中にファクトリマッピングを保存するために実装で使用できます。
- パラメーター:
factoryName- 後続のgetFactory(java.lang.String)の呼び出しで使用される名前。implName-factoryNameに対応するファクトリの完全修飾クラス名。- 例外:
IllegalArgumentExceptionSE-factoryNameが標準の Jakarta Faces ファクトリ名を識別しない場合NullPointerExceptionSE-factorynameが null の場合
releaseFactories
呼び出し元の Web アプリケーションのクラスローダーに関連付けられているファクトリインスタンスへの参照をすべて解放します。このメソッドは、Web アプリケーションのシャットダウン中に呼び出す必要があります。
- 例外:
FacesException- Web アプリケーションクラスローダーを識別できない場合