public interface DomainCombiner
DomainCombiner提供了一种手段来动态更新与当前AccessControlContext 。
A DomainCombiner作为参数传递给适用于AccessControlContext的构造AccessControlContext 。 然后将新构建的上下文传递给AccessController.doPrivileged(..., context)方法以将提供的上下文(和关联的DomainCombiner )与当前执行的线程进行绑定。 随后电话AccessController.getContext或AccessController.checkPermission原因DomainCombiner.combine即可调用。
组合方法有两个参数。 第一个参数表示当前执行Thread中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方法从AccessController.getContext接收到AccessController.getContext的组合堆栈DomainCombiner ,它返回一个新的AccessControlContext,它们具有组合的ProtectionDomain以及DomainCombiner 。
AccessController , AccessControlContext
| Modifier and Type | Method and Description |
|---|---|
ProtectionDomain[] |
combine(ProtectionDomain[] currentDomains, ProtectionDomain[] assignedDomains)
修改或更新提供的ProtectionDomains。
|
ProtectionDomain[] combine(ProtectionDomain[] currentDomains, ProtectionDomain[] assignedDomains)
currentDomains - 与当前执行线程相关联的ProtectionDomains,最高权限为ProtectionDomain 。
ProtectionDomains按执行顺序列出,最近执行的ProtectionDomain位于阵列的开头。
此参数可以为null如果当前的执行线程没有相关的ProtectionDomains。
assignedDomains - 一个继承的ProtectionDomains数组。
ProtectionDomains可以从父线程或从特权AccessControlContext 。
此参数可以为null如果没有继承的ProtectionDomain。
null 。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.