Module java.base
Package java.security

Interface DomainCombiner

所有已知的实现类:
SubjectDomainCombiner

@Deprecated(since="17", forRemoval=true) public interface DomainCombiner
Deprecated, for removal: This API element is subject to removal in a future version.
This class is only useful in conjunction with the Security Manager, which is deprecated and subject to removal in a future release. Consequently, this class is also deprecated and subject to removal. There is no replacement for the Security Manager or this class.
DomainCombiner提供了一种动态更新与当前AccessControlContext关联的ProtectionDomains的方法。

DomainCombiner作为参数传递给AccessControlContext的适当构造函数。然后将新构建的上下文传递给AccessController.doPrivileged(..., context)方法,以将提供的上下文(和关联的DomainCombiner)与当前执行线程绑定。随后调用AccessController.getContextAccessController.checkPermission会导致调用DomainCombiner.combine

combine方法接受两个参数。第一个参数表示从当前执行线程的ProtectionDomains数组,自最近一次调用AccessController.doPrivileged以来。如果没有调用doPrivileged,则第一个参数将包含当前执行线程的所有ProtectionDomains。第二个参数表示继承的ProtectionDomains数组,可能为null。ProtectionDomains可以从父线程继承,也可以从特权上下文继承。如果没有调用doPrivileged,则第二个参数将包含从父线程继承的ProtectionDomains。如果进行了一次或多次doPrivileged调用,并且最近的调用是doPrivileged(action, context),则第二个参数将包含特权上下文中的ProtectionDomains。如果最近的调用是doPrivileged(action),则没有特权上下文,第二个参数将为null

combine方法调查两个输入的ProtectionDomains数组,并返回一个包含更新的ProtectionDomains的单个数组。在最简单的情况下,combine方法将两个堆栈合并为一个。在更复杂的情况下,combine方法将返回一个修改后的ProtectionDomains堆栈。修改可能已添加新的ProtectionDomains,删除某些ProtectionDomains,或简单地更新现有ProtectionDomains。还允许重新排序和其他优化ProtectionDomains。通常,combine方法基于DomainCombiner中封装的信息进行更新。

AccessController.getContext方法从DomainCombiner接收到合并的ProtectionDomains堆栈后,它将返回一个新的AccessControlContext,其中既包含合并的ProtectionDomains,也包含DomainCombiner

自版本:
1.3
参见:
  • Method Summary

    Modifier and Type
    Method
    Description
    combine(ProtectionDomain[] currentDomains, ProtectionDomain[] assignedDomains)
    已弃用,将被移除: 该API元素可能在将来的版本中被移除。
    修改或更新提供的ProtectionDomains。
  • Method Details

    • combine

      ProtectionDomain[] combine(ProtectionDomain[] currentDomains, ProtectionDomain[] assignedDomains)
      Deprecated, for removal: This API element is subject to removal in a future version.
      修改或更新提供的ProtectionDomains。可以向给定的ProtectionDomains添加或删除ProtectionDomains。ProtectionDomains可以重新排序。可以修改单个ProtectionDomains(例如,使用新的Permissions)。
      参数:
      currentDomains - 与当前执行线程关联的ProtectionDomains,直到最近的特权ProtectionDomain。ProtectionDomains按执行顺序列出,最近执行的ProtectionDomain位于数组的开头。如果当前执行线程没有关联的ProtectionDomains,则此参数可以为null
      assignedDomains - 继承的ProtectionDomains数组。ProtectionDomains可以从父线程继承,也可以从特权AccessControlContext继承。如果没有继承的ProtectionDomains,则此参数可以为null
      返回:
      由更新的ProtectionDomains组成的新数组,或null