モジュール java.base
パッケージ java.security

インタフェースDomainCombiner

  • 既知のすべての実装クラス:
    SubjectDomainCombiner

    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引数に特権付きコンテキストからのProtectionDomainsが含まれます。 最新の呼出しが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を返します。

    導入されたバージョン:
    1.3
    関連項目:
    AccessController, AccessControlContext
    • メソッドの詳細

      • combine

        ProtectionDomain[] combine​(ProtectionDomain[] currentDomains,
                                   ProtectionDomain[] assignedDomains)
        指定されたProtectionDomainsを変更または更新します。 ProtectionDomainsは、指定されたProtectionDomainsに追加されたり、削除されたりすることがあります。 ProtectionDomainsはまた、再順序付けされることもあります。 個別のProtectionDomainsの場合、Permissionsの新規セットなどを使って変更されることがあります。
        パラメータ:
        currentDomains - 現在の実行Threadに関連付けられたProtectionDomain (最新の特権付きProtectionDomainまで)。 ProtectionDomainsは実行順にリストされ、最も最近実行されたProtectionDomainが配列の先頭に存在します。 実行中のThreadにProtectionDomainが関連付けられていない場合、このパラメータはnullになる可能性がある。
        assignedDomains - 継承されたProtectionDomainsの配列。 ProtectionDomainsは親Threadか、特権付きAccessControlContextから継承されます。 継承されたProtectionDomainが存在しない場合、このパラメータはnullになる可能性がある。
        戻り値:
        変更されたProtectionDomainで構成される新規配列、またはnull