模块  java.base
软件包  javax.security.auth

Class SubjectDomainCombiner

  • 实现的所有接口
    DomainCombiner

    public class SubjectDomainCombiner
    extends Object
    implements DomainCombiner
    一个 SubjectDomainCombiner与校长更新的ProtectionDomains从 Subject与此相关 SubjectDomainCombiner
    从以下版本开始:
    1.4
    • 构造方法详细信息

      • SubjectDomainCombiner

        public SubjectDomainCombiner​(Subject subject)
        将提供的 Subject与此 SubjectDomainCombiner
        参数
        subject -将 Subject到与此相关 SubjectDomainCombiner
    • 方法详细信息

      • getSubject

        public Subject getSubject()
        获取 Subject与此相关 SubjectDomainCombiner
        结果
        所述 Subject与此相关的 SubjectDomainCombiner ,或 null如果没有 Subject与此相关联的 SubjectDomainCombiner
        异常
        SecurityException -如果调用方无权获得 Subject与此相关 SubjectDomainCombiner
      • combine

        public ProtectionDomain[] combine​(ProtectionDomain[] currentDomains,
                                          ProtectionDomain[] assignedDomains)
        使用与此SubjectDomainCombiner相关联的Subject中的Principals更新相关ProtectionDomains。

        一个新的ProtectionDomain实例对于每个非静态创建ProtectionDomain ((staticPermissionsOnly()== FALSE)中currentDomains阵列。每个新ProtectionDomain实例使用所创建的CodeSourcePermission S和ClassLoader从相应ProtectionDomaincurrentDomains ,以及与Subject相关联的主体与此SubjectDomainCombiner静态保护SubjectDomainCombiner组合,不创建新实例。

        所有ProtectionDomains(静态和新实例化)都组合成一个新阵列。 assignedDomains数组中的ProtectionDomains将附加到此新数组,并返回结果。

        请注意,可能已发生诸如删除重复的ProtectionDomain之类的优化。 此外,可以允许缓存ProtectionDomains。

        Specified by:
        combine在界面 DomainCombiner
        参数
        currentDomains - 与当前执行线程关联的ProtectionDomain,直到最新的特权ProtectionDomain ProtectionDomains按执行顺序列出,最近执行的ProtectionDomain位于阵列的开头。 如果当前执行线程没有关联的ProtectionDomains,则此参数可能为null
        assignedDomains -从特权从父线程继承的ProtectionDomain,或的ProtectionDomain context ,如果一个电话 AccessController.doPrivileged(..., context)发生此参数可以为 null如果没有从父线程继承的ProtectionDomain,或从特权 context
        结果
        由更新的ProtectionDomains组成的新阵列,或 null