模块 java.base

接口 DomainCombiner

所有已知的实现类:
SubjectDomainCombiner

@Deprecated (since ="17", forRemoval =true) public interface DomainCombiner
已弃用,将被删除:此 API 元素可能会在未来版本中删除。
此类仅与 安全管理器 结合使用,后者已弃用并会在未来版本中删除。因此,此类也已弃用并可能被删除。安全管理器或此类没有替代品。
DomainCombiner 提供了一种动态更新与当前 AccessControlContext 关联的 ProtectionDomains 的方法。

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

combine 方法有两个参数。第一个参数表示自最近一次调用 AccessController.doPrivileged 以来,来自当前执行线程的 ProtectionDomains 数组。如果没有调用 doPrivileged,那么第一个参数将包含来自当前执行线程的所有 ProtectionDomain。第二个参数表示继承的 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
参见:
  • 方法总结

    修饰符和类型
    方法
    描述
    combine(ProtectionDomain[] currentDomains, ProtectionDomain[] assignedDomains)
    已弃用,将被删除:此 API 元素可能会在未来版本中删除。
    修改或更新提供的 ProtectionDomains。
  • 方法详情

    • combine

      ProtectionDomain [] combine(ProtectionDomain [] currentDomains, ProtectionDomain [] assignedDomains)
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      修改或更新提供的 ProtectionDomains。 ProtectionDomains 可以添加到给定的 ProtectionDomains 或从中删除。 ProtectionDomains 可能会被重新排序。可以修改各个 ProtectionDomains(例如,使用一组新的权限)。
      参数:
      currentDomains - 与当前执行线程关联的 ProtectionDomains,直到最近的特权 ProtectionDomain 。 ProtectionDomains 按执行顺序列出,最近执行的 ProtectionDomain 位于数组的开头。如果当前执行线程没有关联的 ProtectionDomain,则此参数可能是 null
      assignedDomains - 继承的保护域数组。 ProtectionDomains 可以从父线程或特权 AccessControlContext 继承。如果没有继承的 ProtectionDomain,则此参数可能是 null
      返回:
      由更新的 ProtectionDomains 或 null 组成的新数组。