クラスObjectInputFilter.Config

java.lang.Object
java.io.ObjectInputFilter.Config
含まれているインタフェース:
ObjectInputFilter

public static final class ObjectInputFilter.Config extends Object
JVM全体の直列化復元フィルタ・ファクトリを設定および取得するユーティリティ・クラス、静的なJVM全体のフィルタ、またはパターン文字列からフィルタを作成するユーティリティ・クラス。 静的フィルタ・ファクトリおよび静的フィルタはJavaランタイ 全体に適用されるか、"JVM-wide"はそれぞれ1つのみ存在します。 関数の詳細は、ObjectInputFilterを参照してく さい。

JVM全体の直列化復元フィルタ・ファクトリおよび静的JVM全体のフィルタは、ObjectInputFilter.Configクラスの初期化中にシステ ・プロパティから構成できます。

Java仮想マシンがシステ ・プロパティjdk.serialFilterで起動される 合、その値を使用してフィルタが構成されます。 システ ・プロパティが定義されておらず、Securityプロパティjdk.serialFilterが定義されている 合は、フィルタの構成に使用されます。 フィルタは、createFilterがコールされるかのように作成されます。フィルタ文字列が無効な 合、初期化が失敗し、その後の「フィルタの取得」「フィルタの設定」の試行、またはObjectInputStreamの作成でIllegalStateExceptionがスローされます。 無効なシリアル・フィルタでは直列化復元できません。 システ ・プロパティjdk.serialFilterまたはSecurityプロパティjdk.serialFilterが設定されていない 合、フィルタはConfig.setSerialFilterで設定できます。 jdk.serialFilterSystem.setProperty 「フィルタが設定されていません」に設定します。 プロパティ値の構文は、createFilterメソッドの 合と同じです。

Java仮想マシンが同じ名前のシステ ・プロパティjdk.serialFilterFactoryまたはSecurityプロパティを使用して起動された 合、その値には、JVM全体の直列化復元フィルタ・ファクトリを構成するためにクラスが指定されます。 システ ・プロパティが定義されておらず、Securityプロパティjdk.serialFilterFactoryが定義されている 合は、フィルタ・ファクトリの構成に使用されます。 設定されていない 合、フィルタ・ファクトリは、以前のバージョンと互換性のある組込みフィルタ・ファクトリです。

クラスはpublicで、0引数のパブリック・コンストラクタが必要です。BinaryOperator<ObjectInputFilter>インタフェースを実装し、実装を提供して、「アプリケーション・クラス・ローダー」を介してアクセスできます。 フィルタ・ファクトリ・コンストラクタが「ファクトリを取得」「ファクトリを設定」への後続の試行に正常に起動されない 合、またはObjectInputStreamの作成でIllegalStateExceptionがスローされます。 無効なシリアル・フィルタ・ファクトリでは直列化復元できません。 初期化中にシステ またはセキュリティ・プロパティを使用して構成されたフィルタ・ファクトリは、Config.setSerialFilterFactoryに置き換えることはできません。 これにより、コマンド行に設定されているフィルタ・ファクトリが、誤って、または意図的にアプリケーションによって上書きされないことが保証されます。

jdk.serialFilterFactorySystem.setPropertyと設定しても、「フィルタ・ファクトリを設定しません」 システ ・プロパティ値とセキュリティ・プロパティ値の構文は、直列化復元フィルタ・ファクトリの完全修飾クラス名です。

導入されたバージョン:
9
  • メソッドの詳細

    • getSerialFilter

      public static ObjectInputFilter getSerialFilter()
      静的JVM全体の直列化復元フィルタを返すか、構成されていない 合はnullを返します。
      戻り値:
      静的JVM全体の直列化復元フィルタ、または構成されていない 合はnull
      スロー:
      IllegalStateException - システ ・プロパティjdk.serialFilterまたはセキュリティ・プロパティjdk.serialFilterからのフィルタの初期化に失敗した 合。
    • setSerialFilter

      public static void setSerialFilter(ObjectInputFilter filter)
      ま 構成または設定されていない 合は、静的JVM全体のフィルタを設定します。
      パラメータ:
      filter - JVM全体のフィルタとして設定する直列化復元フィルタ。nullではありません
      スロー:
      IllegalStateException - フィルタがすでに設定されている 合、またはシステ ・プロパティjdk.serialFilterからのフィルタの初期化に失敗するか、セキュリティ・プロパティjdk.serialFilterが失敗します。
    • getSerialFilterFactory

      public static BinaryOperator<ObjectInputFilter> getSerialFilterFactory()
      JVM全体の直列化復元フィルタ・ファクトリを返します。 フィルタ・ファクトリがsetの 合は戻り、それ以外の 合は、組込みの直列化復元フィルタ・ファクトリが返されます。 フィルタ・ファクトリは、「ObjectInputStreamコンストラクタ」から呼び出されたとき、およびストリー 固有のフィルタがsetObjectInputFilterで設定されている 合に、ObjectInputStreamごとにフィルタを提供します。
      実装要件:
      組み込みの直列化復元フィルタ・ファクトリは、「ObjectInputStreamコンストラクタ」から起動されたときに「静的JVM全体のフィルタ」を提供します。 to set the stream-specific filterを起動した 合、すでに設定されていないかぎり、リクエストされたフィルタは静的JVM全体のフィルタに置き換えられます。 組込みの直列化復元フィルタ・ファクトリは、ObjectInputStreamコンストラクタおよびObjectInputStream.setObjectInputFilter(java.io.ObjectInputFilter)で初期フィルタを設定する以前のバージョンの動作を実装します。
      戻り値:
      JVM全体の直列化復元フィルタ・ファクトリ。null以外
      スロー:
      IllegalStateException - フィルタ・ファクトリの初期化が不完全の 合
      導入されたバージョン:
      17
    • setSerialFilterFactory

      public static void setSerialFilterFactory(BinaryOperator<ObjectInputFilter> filterFactory)
      「JVM全体の直列化復元フィルタ・ファクトリ」を設定します。 フィルタ・ファクトリは、次のいずれかを使用して1回のみ構成できます: コマンドラインでjdk.serialFilterFactoryプロパティを設定するか、Securityファイルでjdk.serialFilterFactoryプロパティを設定するか、このsetSerialFilterFactoryメソッドを使用します。 フィルタ・ファクトリは、フィルタ・ファクトリが使用されている不整合を回避するために、ObjectInputStreamが作成される前にのみ設定できます。

      JVM全体のフィルタ・ファクトリは、ObjectInputStreamが 「構築される」および「ストリー 固有のフィルタが設定される」ときに起動されます。 パラメータは現在のフィルタとリクエストされたフィルタで、ストリー に使用されるフィルタを返します。 現在のフィルタがnon-nullの 合、フィルタ・ファクトリはnon-nullフィルタを返す必要があります。これは、有効化後に意図せずフィルタを無効にすることを防止するためです。 ファクトリは、入力、その他のフィルタ、コンテキストまたは使用可能な状態に基づいて、ObjectInputStreamストリー に使用するフィルタを決定します。 ファクトリは、不適切な使用または無効なパラメータを示すためにランタイ 例外をスローする可能性があります。 構成と委任の例については、「モデルのフィルタ」を参照してく さい。

      パラメータ:
      filterFactory - JVM全体のフィルタ・ファクトリとして設定する直列化復元フィルタ・ファクトリ。nullではありません
      スロー:
      IllegalStateException - 組み込みの直列化復元フィルタ・ファクトリがすでに置換されているか、ObjectInputStreamのインスタンスが作成されている 合。
      導入されたバージョン:
      17
    • createFilter

      public static ObjectInputFilter createFilter(String pattern)
      パターンの文字列からObjectInputFilterを返します。

      パターンは";" (semicolon)で区切られています。 空白は重要であり、パターンの一部とみなされます。 パターンに等号割当てが含まれる 合、"="は制限を設定します。 制限が複数回出現する 合は、最後の値が使用されます。

      • maxdepth= value - グラフの最大深度
      • maxrefs= value - 内部参照の最大数
      • maxbytes= value - 入力ストリー の最大バイト数
      • maxarray= value - 許容される最大配列長

      他のパターンは、Class.getName()から返されるクラス名またはパッケージ名と一致または拒否され、オプションのモジュール名が存在する 合はclass.getModule().getName()となります。 配列の 合、要 タイプは配列タイプではなくパターンで使用されます。

      • パターンが"!"で始まる 合、残りのパターンが一致するとクラスは拒否されます。一致しない 合は、パターンが一致するとクラスが許可されます。
      • パターンに"/"が含まれる 合、"/"までの空でないプレフィクスはモジュール名です。モジュール名がクラスのモジュール名と一致する 合、残りのパターンはクラス名と一致します。 "/"がない 合、モジュール名は比較されません。
      • パターンが".**"で終わる 合は、パッケージ内のすべてのクラスおよびすべてのサブパッケージと一致します。
      • パターンが".*"で終わる 合は、パッケージ内の任意のクラスと一致します。
      • パターンが"*"で終わる 合は、パターンがプレフィクスとして指定されたクラスに一致します。
      • パターンがクラス名と等しい 合は、一致します。
      • それ以外の 合、パターンは一致しません。

      結果のフィルタは、制限チェックを実行し、クラス(ある 合)の一致を試行します。 いずれかの制限を超えた 合、フィルタはStatus.REJECTEDを返します。 クラスが配列型の 合、照合されるクラスは要 型です。 任意の数のディメンションの配列は、要 タイプと同様に処理されます。 たとえば、パターン"!example.Foo"は、example.Fooのインスタンスまたは配列の作成を拒否します。 左から右に動作する最初のパターンによって、Status.ALLOWEDまたはStatus.REJECTEDの結果が決定されます。 制限を超えず、パターンがクラスに一致しない 合、結果はStatus.UNDECIDEDになります。

      パラメータ:
      pattern - パースするパターン文字列。nullではない
      戻り値:
      直列化復元されるクラスをチェックするフィルタ。パターンがない 合はnull
      スロー:
      IllegalArgumentException - パターン文字列が不正または不正な形式であり、解析できない 合。 特に、次のいずれかが当てはまる 合:
      • 制限がない 合、名前または名前は"maxdepth"、"maxrefs"、"maxbytes"、または"maxarray"のいずれかではありません
      • リミットの値がLong.parseLongによって解析できないか、 の値である 合
      • パターンに"/"が含まれていて、モジュール名がないか、または残りのパターンが空の 合
      • パッケージが".*"と".**"にない 合