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, waitSE
public 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.