- 所有已知的实现类:
SubjectDomainCombiner
DomainCombiner
提供了一种动态更新与当前 AccessControlContext
关联的 ProtectionDomains 的方法。
DomainCombiner
作为参数传递给 AccessControlContext
的适当构造函数。然后将新构造的上下文传递给 AccessController.doPrivileged(..., context)
方法,以将提供的上下文(和关联的 DomainCombiner
)与当前执行线程绑定。对 AccessController.getContext
或 AccessController.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
组成的新数组。
-