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