|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.security
接口 DomainCombiner
- 所有已知实现类:
- SubjectDomainCombiner
-
public interface DomainCombiner
DomainCombiner
提供一个动态更新与当前 AccessControlContext
关联的 ProtectionDomain 的方法。
将 DomainCombiner
作为参数传递给 AccessControlContext
的适当的构造方法。然后,将新构造的上下文传递给 AccessController.doPrivileged(..., context)
方法来将提供的上下文(以及关联的 DomainCombiner
)与当前的执行线程绑定在一起。对 AccessController.getContext
或 AccessController.checkPermission
的后续调用将导致对 DomainCombiner.combine
的调用。
combine 方法带有两个参数。第一个参数表示从最近一次调用 AccessController.doPrivileged
以来当前执行线程中 ProtectionDomain 的数组。如果没有调用 doPrivileged,则第一个参数将包含当前执行线程中的所有 ProtectionDomain。第二个参数表示继承的 ProtectionDomain 的数组,可能为 null
。ProtectionDomain 可能是从父线程或特权上下文继承的。如果没有调用 doPrivileged,则第二个参数将包含从父线程继承的 ProtectionDomain。如果对 doPrivileged 进行了一次或多次调用,并且最近一次调用的是 doPrivileged(action, context),那么第二个参数将包含特权上下文中的 ProtectionDomain。如果最近一次调用的是 doPrivileged(action),则不存在特权上下文,第二个参数将为 null
。
combine
方法研究两个 ProtectionDomain 的输入数组,返回包含更新的 ProtectionDomain 的单个数组。在最简单的情况下,combine
方法将两个堆栈合并为一个。在较复杂的情况下,combine
方法返回 ProtectionDomain 的修改的堆栈。修改操作可能添加新的 ProtectionDomain、移除某些特定的 ProtectionDomain 或者只是更新现有的 ProtectionDomain。对 ProtectionDomain 重新排序及进行其他优化也是允许的。通常,combine
方法基于 DomainCombiner
中封装的信息进行更新。
在 AccessController.getContext
方法从 DomainCombiner
接收 ProtectionDomain 后备的组合堆栈后,它将返回包含组合 ProtectionDomain 和 DomainCombiner
的新 AccessControlContext。
方法摘要 | |
---|---|
ProtectionDomain[] |
combine(ProtectionDomain[] currentDomains, ProtectionDomain[] assignedDomains) 修改或更新提供的 ProtectionDomain。 |
方法详细信息 |
---|
combine
ProtectionDomain[] combine(ProtectionDomain[] currentDomains, ProtectionDomain[] assignedDomains)
- 修改或更新提供的 ProtectionDomain。可以将 ProtectionDomain 添加到给定的 ProtectionDomain 中,也可以从中移除。可以重新排列 ProtectionDomain 的顺序。可以修改个别 ProtectionDomain(例如,利用新的 Permission 的集合)。
-
- 参数:
-
currentDomains
- 与当前执行线程关联的 ProtectionDomain,直到最近的特权ProtectionDomain
.ProtectionDomain 按执行的顺序列出,最近执行的ProtectionDomain
位于数组的开头。如果当前执行的线程没有任何关联的 ProtectionDomain,则此参数为null
。 -
assignedDomains
- 继承的 ProtectionDomain 组成的数组。ProtectionDomain 可能是从父线程或特权AccessControlContext
继承的。如果不存在任何继承的 ProtectionDomain,则此参数为null
。 - 返回:
-
由更新的 ProtectionDomain 组成的新数组;或者
null
。
所有类
|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |