public interface DomainCombiner
DomainCombiner
动态更新与当前
AccessControlContext
相关的protectiondomains提供了一种手段。
一个DomainCombiner
作为参数传递给适当的构造函数AccessControlContext
。新构建的背景下通过的AccessController.doPrivileged(..., context)
方法结合所提供的语境(和相关的DomainCombiner
)与当前执行线程。随后调用AccessController.getContext
或AccessController.checkPermission
导致DomainCombiner.combine
得到调用。
组合方法需要两个参数。第一个参数表示从当前执行线程的protectiondomains数组,因为AccessController.doPrivileged
最近的电话。如果没有调用doPrivileged了,那么第一个参数将包含当前执行线程的所有protectiondomains。二是继承protectiondomains阵列,可null
。protectiondomains可以从父线程继承,或从一个特权上下文。如果没有调用doPrivileged了,然后第二个参数将包含从父线程继承protectiondomains。如果一个或更多doPrivileged调用了,和最近的电话是打给doPrivileged(动作、背景),然后第二个参数将包含从特权上下文的protectiondomains。如果最近的电话是打给doPrivileged(行动),那么就没有特权的背景下,第二个参数将null
。
的combine
方法研究protectiondomains两输入数组并返回一个数组包含更新的protectiondomains。在最简单的情况下,该combine
方法合并两叠成一个。在更复杂的情况下,该combine
方法返回一个修改堆栈的protectiondomains。修改可能会增加新的protectiondomains,删除了某些protectiondomains,或者更新现有的protectiondomains。重新排序和优化的protectiondomains也是允许的。通常情况下,combine
方法以更新的信息封装在DomainCombiner
。
的AccessController.getContext
方法接收protectiondomains栈合并回从DomainCombiner
后,它返回一个新的accesscontrolcontext具有联合protectiondomains以及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
如果没有继承protectiondomains。
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.