public interface DomainCombiner
DomainCombiner
では、動的に現行の AccessControlContext
に関連した ProtectionDomains を変更する手段を提供します。
DomainCombiner
は、AccessControlContext
の適切なコンストラクタにパラメータとして渡されます。次に、この新たに構築されたコンテキストは、AccessController.doPrivileged(..., context)
メソッドに渡されて、指定されたコンテキストとそれに関連した DomainCombiner
を現行の実行 Thread にバインドします。その後、AccessController.getContext
または AccessController.checkPermission
を呼び出すと、DomainCombiner.combine
が呼び出されます。
combine メソッドには引数が 2 つあります。第 1 引数は、現在実行中の Thread の、AccessController.doPrivileged
を最後に呼び出してからの、ProtectionDomains の配列を表します。doPrivileged の呼び出しがない場合、第 1 引数には実行中の Thread からのすべての ProtectionDomains が含まれます。第 2 引数は継承された ProtectionDomains の配列を表します。この引数は null
の場合もあります。ProtectionDomains は親 Thread か、特権付きコンテキストから継承されます。doPrivileged の呼び出しがない場合、第 2 引数に親 Thread から継承された ProtectionDomains が含まれます。doPrivileged が 1 回以上呼び出され、最新の呼び出しが doPrivileged(action, context) である場合は、第 2 引数に特権付きコンテキストからの ProtectDomains が含まれます。最新の呼び出しが doPrivileged(action) である場合、特権付きコンテキストは存在せず、第 2 引数は null
になります。
combine
メソッドでは、ProtectionDomains の 2 通りの入力配列を調べ、変更された ProtectionDomains を含む配置を 1 つ返します。もっとも単純な場合、combine
メソッドは、2 つのスタックを 1 つに統合します。複雑になると、combine
メソッドは、ProtectionDomains の変更済みスタックを返します。変更には、新規 ProtectionDomains の追加、特定の ProtectionDomains の削除、または簡単に変更された既存の ProtectionDomains があります。ProtectionDomains に対する再順序付けとその他の最適化もまた許可されます。通常、combine
メソッドは、DomainCombiner
でカプセル化された情報に関するメソッドの変更を基にします。
AccessController.getContext
メソッドは、組み合わされた ProtectionDomains のスタックを DomainCombiner
から受け取ったあと、DomainCombiner
と、組み合わされた ProtectionDomains の 2 つを持つ新規 AccessControlContext を返します。
AccessController
, AccessControlContext
修飾子と型 | メソッドと説明 |
---|---|
ProtectionDomain[] |
combine(ProtectionDomain[] currentDomains, ProtectionDomain[] assignedDomains)
指定された ProtectionDomains を変更または更新します。
|
ProtectionDomain[] combine(ProtectionDomain[] currentDomains, ProtectionDomain[] assignedDomains)
currentDomains
- 現在の実行 Thread に関連付けられた ProtectionDomain (最新の特権付き ProtectionDomain
まで)。ProtectionDomains は、最後に実行した ProtectionDomain
を配列の先頭にして、実行された順で列挙される。実行中の Thread に ProtectionDomain が関連付けられていない場合、このパラメータは null
になる可能性がある。assignedDomains
- 継承された ProtectionDomains の配列。ProtectionDomains は親 Thread か、特権付き AccessControlContext
から継承されます。継承された ProtectionDomain が存在しない場合、このパラメータは null
になる可能性がある。null
。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.