- 直接已知的子类:
-
RMISecurityManager
SecurityManager
类包含许多以check
开头的方法。在这些方法执行某些潜在敏感操作之前,Java库中的各种方法会调用这些方法。调用这样一个check
方法通常如下所示:
SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkXXX(argument, . . . ); }
安全管理器因此有机会通过抛出异常来阻止操作的完成。如果允许操作,安全管理器例程会简单地返回,但如果不允许操作,则会抛出SecurityException
。
设置安全管理器
使用安全管理器的环境通常会在启动时设置安全管理器。在JDK实现中,可以通过在命令行上将系统属性java.security.manager
设置为安全管理器的类名来完成此操作。也可以将其设置为空字符串("")或特殊标记"default
"以使用默认的java.lang.SecurityManager
。如果指定了类名,它必须是java.lang.SecurityManager
或公共子类,并且必须具有公共无参数构造函数。如果不是java.lang.SecurityManager
,则该类将由内置系统类加载器加载。如果未设置java.security.manager
系统属性,则默认值为null
,这意味着在启动时不会设置安全管理器。
Java运行时也可能允许,但不要求允许通过调用setSecurityManager
方法动态设置安全管理器。在JDK实现中,如果Java虚拟机启动时将java.security.manager
系统属性设置为特殊标记"allow
",则不会在启动时设置安全管理器,但可以动态设置。如果Java虚拟机启动时未设置java.security.manager
系统属性或将其设置为特殊标记"disallow
",则不会在启动时设置安全管理器,也无法动态设置(setSecurityManager
方法将抛出UnsupportedOperationException
)。最后,如果将java.security.manager
系统属性设置为安全管理器的类名,或为空字符串("")或特殊标记"default
",则会在启动时设置安全管理器(如前所述),并且还可以随后替换(或禁用)动态设置(取决于当前安装的安全管理器的策略)。以下表格说明了java.security.manager
系统属性的不同设置对JDK实现行为的影响:
属性值 | 启动时设置的SecurityManager | System.setSecurityManager运行时行为 |
---|---|---|
null | 无 | 抛出UnsupportedOperationException |
空字符串("") | java.lang.SecurityManager |
成功或如果当前安装的安全管理器不允许则抛出SecurityException |
"default" | java.lang.SecurityManager |
成功或如果当前安装的安全管理器不允许则抛出SecurityException |
"disallow" | 无 | 抛出UnsupportedOperationException |
"allow" | 无 | 成功或如果当前安装的安全管理器不允许则抛出SecurityException |
类名 | 指定的类 | 成功或如果当前安装的安全管理器不允许则抛出SecurityException |
当前的安全管理器可以通过getSecurityManager
方法返回。
检查权限
特殊方法checkPermission(java.security.Permission)
确定指定权限表示的访问请求是否应该被授予或拒绝。默认实现调用
AccessController.checkPermission(perm);
如果允许请求的访问,则checkPermission
会静默返回。如果被拒绝,则会抛出SecurityException
。
SecurityManager
中其他每个check
方法的默认实现是调用SecurityManager checkPermission
方法,以确定调用线程是否有权限执行请求的操作。
请注意,只带有单个权限参数的checkPermission
方法始终在当前执行线程的上下文中执行安全检查。有时应该在给定上下文中进行的安全检查实际上需要从一个不同的上下文中进行(例如,从工作线程中)。为此情况提供了getSecurityContext
方法和包含上下文参数的checkPermission
方法。getSecurityContext
方法返回当前调用上下文的"快照"。(默认实现返回一个AccessControlContext对象。)以下是一个示例调用:
Object context = null; SecurityManager sm = System.getSecurityManager(); if (sm != null) context = sm.getSecurityContext();
除了当前执行线程的上下文之外,还带有上下文对象的权限检查方法基于该上下文做出访问决策。因此,不同上下文中的代码可以调用该方法,传递权限和先前保存的上下文对象。使用前面示例中获取的SecurityManager sm
进行的示例调用如下:
if (sm != null) sm.checkPermission(permission, context);
权限分为以下类别: 文件、套接字、网络、安全、运行时、属性、AWT、反射和可序列化。管理这些不同权限类别的类分别是java.io.FilePermission
、java.net.SocketPermission
、java.net.NetPermission
、java.security.SecurityPermission
、java.lang.RuntimePermission
、java.util.PropertyPermission
、java.awt.AWTPermission
、java.lang.reflect.ReflectPermission
和java.io.SerializablePermission
。
除了前两个(FilePermission和SocketPermission)之外,所有其他权限类都是java.security.BasicPermission
的子类,java.security.BasicPermission
本身是权限的顶级类的抽象子类,该顶级类是java.security.Permission
。BasicPermission定义了所有包含遵循分层属性命名约定的名称的权限所需的功能(例如,"exitVM"、"setFactory"、"queuePrintJob"等)。名称末尾可能会出现一个星号,跟随一个".",或者单独出现,以表示通配符匹配。例如:"a.*"或"*"是有效的,"*a"或"a*b"是无效的。
FilePermission和SocketPermission是权限的顶级类(java.security.Permission
)的子类。具有比BasicPermission使用的名称语法更复杂的类(例如java.io.FilePermission
对象)直接从Permission而不是BasicPermission进行子类化。例如,对于java.io.FilePermission
对象,权限名称是文件(或目录)的路径名。
一些权限类具有"actions"列表,指定了为对象授予的操作。例如,对于java.io.FilePermission
对象,操作列表(如"read, write")指定了为指定文件(或指定目录中的文件)授予的操作。
其他权限类是用于"命名"权限的类 - 这些类包含名称但没有操作列表;您要么具有命名权限,要么没有。
注意: 还有一个java.security.AllPermission
权限,它包含所有权限。它存在是为了简化系统管理员可能需要执行需要所有(或许多)权限的多个任务的工作。
有关权限相关信息,请参阅Java开发工具包(JDK)中的权限。该文档包括列出各种SecurityManager check
方法及每个此类方法的默认实现所需的权限的表格。它还包含一个需要权限的方法的表格,并针对每个此类方法告知其需要的权限。
- 自从:
- 1.0
- 参见:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
checkAccept
(String host, int port) 已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许从指定主机和端口号接受套接字连接,则抛出SecurityException
。void
已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许修改线程参数,则抛出SecurityException
。void
已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许修改线程组参数,则抛出SecurityException
。void
checkConnect
(String host, int port) 已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许向指定主机和端口号打开套接字连接,则抛出SecurityException
。void
checkConnect
(String host, int port, Object context) 已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果指定的安全上下文不被允许向指定主机和端口号打开套接字连接,则抛出SecurityException
。void
已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许创建新的类加载器,则抛出SecurityException
。void
checkDelete
(String file) 已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许删除指定文件,则抛出SecurityException
。void
已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许创建子进程,则抛出SecurityException
。void
checkExit
(int status) 已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许使Java虚拟机以指定的状态码终止,则抛出SecurityException
。void
已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许动态链接由字符串参数文件指定的库代码,则抛出SecurityException
。void
checkListen
(int port) 已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许在指定的本地端口号上等待连接请求,则抛出SecurityException
。void
checkMulticast
(InetAddress maddr) 已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许使用(加入/离开/发送/接收)IP多播,则抛出SecurityException
。void
checkMulticast
(InetAddress maddr, byte ttl) 已弃用,将来会移除:此API元素可能会在将来的版本中移除。void
checkPackageAccess
(String pkg) 已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许访问指定包,则抛出SecurityException
。void
已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许在指定包中定义类,则抛出SecurityException
。void
checkPermission
(Permission perm) 已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果根据当前生效的安全策略,指定的权限目标名称的权限不被允许,则抛出SecurityException
。void
checkPermission
(Permission perm, Object context) 已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果指定的安全上下文被拒绝访问给定权限指定的资源,则抛出SecurityException
。void
已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许发起打印作业请求,则抛出SecurityException
。void
已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许访问或修改系统属性,则抛出SecurityException
。void
已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许访问具有指定key
名称的系统属性,则抛出SecurityException
。void
已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许从指定文件描述符读取,则抛出SecurityException
。void
已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许读取由字符串参数指定的文件,则抛出SecurityException
。void
已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果指定的安全上下文不被允许读取由字符串参数指定的文件,则抛出SecurityException
。void
checkSecurityAccess
(String target) 已弃用,将来会移除:此API元素可能会在将来的版本中移除。确定是否应授予或拒绝具有指定权限目标名称的权限。void
已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许设置ServerSocket
或Socket
使用的套接字工厂,或者URL
使用的流处理程序工厂,则抛出SecurityException
。void
已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许向指定文件描述符写入,则抛出SecurityException
。void
checkWrite
(String file) 已弃用,将来会移除:此API元素可能会在将来的版本中移除。如果调用线程不被允许向由字符串参数指定的文件写入,则抛出SecurityException
。protected Class<?>[]
已弃用,将来会移除:此API元素可能会在将来的版本中移除。将当前执行堆栈作为类数组返回。已弃用,将来会移除:此API元素可能会在将来的版本中移除。创建一个封装当前执行环境的对象。已弃用,将来会移除:此API元素可能会在将来的版本中移除。返回在调用时用于实例化任何新线程的线程组。
-
Constructor Details
-
SecurityManager
public SecurityManager()Deprecated, for removal: This API element is subject to removal in a future version.构造一个新的SecurityManager
。如果已经安装了安全管理器,则此方法首先使用
RuntimePermission("createSecurityManager")
权限调用安全管理器的checkPermission
方法,以确保调用线程有权限创建新的安全管理器。这可能导致抛出SecurityException
。- 抛出:
-
SecurityException
- 如果安全管理器已经存在且其checkPermission
方法不允许创建新的安全管理器。 - 参见:
-
-
Method Details
-
getClassContext
Deprecated, for removal: This API element is subject to removal in a future version.返回当前执行堆栈作为类数组。数组的长度是执行堆栈上的方法数。索引为
0
的元素是当前执行方法的类,索引为1
的元素是该方法的调用者的类,依此类推。- 返回:
- 执行堆栈。
-
getSecurityContext
Deprecated, for removal: This API element is subject to removal in a future version.创建一个封装当前执行环境的对象。该方法的结果例如被三参数的checkConnect
方法和两参数的checkRead
方法使用。这些方法是必需的,因为一个受信任的方法可能被调用来代表另一个方法读取文件或打开套接字。受信任的方法需要确定另一个(可能不受信任的)方法是否允许自行执行操作。该方法的默认实现是返回一个
AccessControlContext
对象。- 返回:
- 一个依赖于实现的对象,封装了关于当前执行环境的足够信息,以便稍后执行一些安全检查。
- 参见:
-
checkPermission
Deprecated, for removal: This API element is subject to removal in a future version.如果根据当前生效的安全策略不允许基于给定权限的请求访问,则抛出SecurityException
。该方法使用给定权限调用
AccessController.checkPermission
。- 参数:
-
perm
- 请求的权限。 - 抛出:
-
SecurityException
- 如果基于当前安全策略不允许访问。 -
NullPointerException
- 如果权限参数为null
。 - 自版本:
- 1.2
-
checkPermission
Deprecated, for removal: This API element is subject to removal in a future version.如果指定的安全上下文被拒绝访问给定权限指定的资源,则抛出SecurityException
。上下文必须是先前调用getSecurityContext
返回的安全上下文,并且访问控制决策基于该安全上下文的配置的安全策略。如果
context
是AccessControlContext
的实例,则使用指定的权限调用AccessControlContext.checkPermission
方法。如果
context
不是AccessControlContext
的实例,则抛出SecurityException
。- 参数:
-
perm
- 指定的权限 -
context
- 系统相关的安全上下文。 - 抛出:
-
SecurityException
- 如果指定的安全上下文不是AccessControlContext
的实例(例如,为null
),或被拒绝访问给定权限指定的资源。 -
NullPointerException
- 如果权限参数为null
。 - 自版本:
- 1.2
- 参见:
-
checkCreateClassLoader
public void checkCreateClassLoader()Deprecated, for removal: This API element is subject to removal in a future version.如果调用线程不允许创建新的类加载器,则抛出SecurityException
。该方法使用
RuntimePermission("createClassLoader")
权限调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的重写方法处调用
super.checkCreateClassLoader
。- 抛出:
-
SecurityException
- 如果调用线程没有权限创建新的类加载器。 - 参见:
-
checkAccess
Deprecated, for removal: This API element is subject to removal in a future version.如果调用线程不允许修改线程参数,则抛出SecurityException
。该方法由
Thread
类的setPriority
、setName
和setDaemon
方法调用当前安全管理器。如果线程参数是系统线程(属于具有
null
父级的线程组),则此方法使用RuntimePermission("modifyThread")
权限调用checkPermission
。如果线程参数不是系统线程,则此方法只是静默返回。希望更严格策略的应用程序应该重写此方法。如果重写此方法,则覆盖它的方法还应该额外检查调用线程是否具有
RuntimePermission("modifyThread")
权限,如果是,则静默返回。这是为了确保被授予该权限的代码(如JDK本身)被允许操作任何线程。如果重写此方法,则应该在重写方法的第一条语句中调用
super.checkAccess
,或者等效的安全检查应该放在重写方法中。- 参数:
-
t
- 要检查的线程。 - 抛出:
-
SecurityException
- 如果调用线程没有权限修改线程。 -
NullPointerException
- 如果线程参数为null
。 - 参见:
-
checkAccess
Deprecated, for removal: This API element is subject to removal in a future version.如果调用线程不允许修改线程组参数,则抛出SecurityException
。该方法在当前安全管理器为新创建的子线程或子线程组创建时被调用,以及
ThreadGroup
类的setDaemon
和setMaxPriority
方法中被调用。如果线程组参数是系统线程组(具有
null
父级),则此方法使用RuntimePermission("modifyThreadGroup")
权限调用checkPermission
。如果线程组参数不是系统线程组,则此方法只是静默返回。希望更严格策略的应用程序应该重写此方法。如果重写此方法,则覆盖它的方法还应该额外检查调用线程是否具有
RuntimePermission("modifyThreadGroup")
权限,如果是,则静默返回。这是为了确保被授予该权限的代码(如JDK本身)被允许操作任何线程。如果重写此方法,则应该在重写方法的第一条语句中调用
super.checkAccess
,或者等效的安全检查应该放在重写方法中。- 参数:
-
g
- 要检查的线程组。 - 抛出:
-
SecurityException
- 如果调用线程没有权限修改线程组。 -
NullPointerException
- 如果线程组参数为null
。 - 参见:
-
checkExit
public void checkExit(int status) Deprecated, for removal: This API element is subject to removal in a future version.如果调用线程不允许使用指定状态代码使Java虚拟机停止,则抛出SecurityException
。该方法由
Runtime
类的exit
方法调用当前安全管理器。状态0
表示成功;其他值表示各种错误。该方法使用
RuntimePermission("exitVM."+status)
权限调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的重写方法处调用
super.checkExit
。- 参数:
-
status
- 退出状态。 - 抛出:
-
SecurityException
- 如果调用线程没有权限使用指定状态使Java虚拟机停止。 - 参见:
-
checkExec
Deprecated, for removal: This API element is subject to removal in a future version.抛出SecurityException
,如果调用线程不被允许创建子进程。当前安全管理器通过
Runtime
类的exec
方法调用此方法。如果
cmd
是绝对路径,则此方法使用FilePermission(cmd,"execute")
权限调用checkPermission
,否则使用FilePermission("<<ALL FILES>>","execute")
调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的被重写方法的点上调用
super.checkExec
。- 参数:
-
cmd
- 指定的系统命令。 - 抛出:
-
SecurityException
- 如果调用线程没有权限创建子进程。 -
NullPointerException
- 如果cmd
参数为null
。 - 参见:
-
checkLink
Deprecated, for removal: This API element is subject to removal in a future version.抛出SecurityException
,如果调用线程不被允许动态链接由字符串参数file
指定的库代码。参数可以是简单库名称或完整文件名。当前安全管理器通过
Runtime
类的load
和loadLibrary
方法调用此方法。此方法使用
RuntimePermission("loadLibrary."+lib)
权限调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的被重写方法的点上调用
super.checkLink
。- 参数:
-
lib
- 库的名称。 - 抛出:
-
SecurityException
- 如果调用线程没有权限动态链接库。 -
NullPointerException
- 如果lib
参数为null
。 - 参见:
-
checkRead
Deprecated, for removal: This API element is subject to removal in a future version.抛出SecurityException
,如果调用线程不被允许从指定文件描述符读取。此方法使用
RuntimePermission("readFileDescriptor")
权限调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的被重写方法的点上调用
super.checkRead
。- 参数:
-
fd
- 系统相关的文件描述符。 - 抛出:
-
SecurityException
- 如果调用线程没有权限访问指定的文件描述符。 -
NullPointerException
- 如果文件描述符参数为null
。 - 参见:
-
checkRead
Deprecated, for removal: This API element is subject to removal in a future version.抛出SecurityException
,如果调用线程不被允许读取由字符串参数file
指定的文件。此方法使用
FilePermission(file,"read")
权限调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的被重写方法的点上调用
super.checkRead
。- 参数:
-
file
- 系统相关的文件名。 - 抛出:
-
SecurityException
- 如果调用线程没有权限访问指定的文件。 -
NullPointerException
- 如果file
参数为null
。 - 参见:
-
checkRead
Deprecated, for removal: This API element is subject to removal in a future version.抛出SecurityException
,如果指定的安全上下文不被允许读取由字符串参数file
指定的文件。上下文必须是先前调用getSecurityContext
返回的安全上下文。如果
context
是AccessControlContext
的实例,则将使用FilePermission(file,"read")
权限调用AccessControlContext.checkPermission
方法。如果
context
不是AccessControlContext
的实例,则会抛出SecurityException
。如果您重写此方法,则应在通常会抛出异常的被重写方法的点上调用
super.checkRead
。- 参数:
-
file
- 系统相关的文件名。 -
context
- 系统相关的安全上下文。 - 抛出:
-
SecurityException
- 如果指定的安全上下文不是AccessControlContext
的实例(例如,为null
),或没有权限读取指定的文件。 -
NullPointerException
- 如果file
参数为null
。 - 参见:
-
checkWrite
Deprecated, for removal: This API element is subject to removal in a future version.抛出SecurityException
,如果调用线程不被允许写入指定的文件描述符。此方法使用
RuntimePermission("writeFileDescriptor")
权限调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的被重写方法的点上调用
super.checkWrite
。- 参数:
-
fd
- 系统相关的文件描述符。 - 抛出:
-
SecurityException
- 如果调用线程没有权限访问指定的文件描述符。 -
NullPointerException
- 如果文件描述符参数为null
。 - 参见:
-
checkWrite
Deprecated, for removal: This API element is subject to removal in a future version.抛出SecurityException
,如果调用线程不被允许写入由字符串参数file
指定的文件。此方法使用
FilePermission(file,"write")
权限调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的被重写方法的点上调用
super.checkWrite
。- 参数:
-
file
- 系统相关的文件名。 - 抛出:
-
SecurityException
- 如果调用线程没有权限访问指定的文件。 -
NullPointerException
- 如果file
参数为null
。 - 参见:
-
checkDelete
Deprecated, for removal: This API element is subject to removal in a future version.抛出SecurityException
,如果调用线程不被允许删除指定的文件。当前安全管理器通过
File
类的delete
方法调用此方法。此方法使用
FilePermission(file,"delete")
权限调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的被重写方法的点上调用
super.checkDelete
。- 参数:
-
file
- 系统相关的文件名。 - 抛出:
-
SecurityException
- 如果调用线程没有权限删除文件。 -
NullPointerException
- 如果file
参数为null
。 - 参见:
-
checkConnect
Deprecated, for removal: This API element is subject to removal in a future version.如果调用线程不被允许打开到指定主机和端口号的套接字连接,则抛出SecurityException
异常。端口号为
-1
表示调用方法正在尝试确定指定主机名的IP地址。如果端口号不等于-1,则此方法使用
SocketPermission(host+":"+port,"connect")
权限调用checkPermission
。如果端口号等于-1,则使用SocketPermission(host,"resolve")
权限调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的被重写方法的位置调用
super.checkConnect
。- 参数:
-
host
- 要连接的主机名端口。 -
port
- 要连接的协议端口。 - 抛出:
-
SecurityException
- 如果调用线程没有权限打开到指定host
和port
的套接字连接。 -
NullPointerException
- 如果host
参数为null
。 - 参见:
-
checkConnect
Deprecated, for removal: This API element is subject to removal in a future version.如果指定的安全上下文不被允许打开到指定主机和端口号的套接字连接,则抛出SecurityException
异常。端口号为
-1
表示调用方法正在尝试确定指定主机名的IP地址。如果
context
不是AccessControlContext
的实例,则抛出SecurityException
。否则,检查端口号。如果不等于-1,则使用
SocketPermission(host+":"+port,"connect")
权限调用context
的checkPermission
方法。如果端口号等于-1,则使用SocketPermission(host,"resolve")
权限调用context
的checkPermission
方法。如果您重写此方法,则应在通常会抛出异常的被重写方法的位置调用
super.checkConnect
。- 参数:
-
host
- 要连接的主机名端口。 -
port
- 要连接的协议端口。 -
context
- 系统相关的安全上下文。 - 抛出:
-
SecurityException
- 如果指定的安全上下文不是AccessControlContext
的实例(例如为null
),或者没有权限打开到指定host
和port
的套接字连接。 -
NullPointerException
- 如果host
参数为null
。 - 参见:
-
checkListen
public void checkListen(int port) Deprecated, for removal: This API element is subject to removal in a future version.如果调用线程不被允许在指定的本地端口号上等待连接请求,则抛出SecurityException
异常。此方法使用
SocketPermission("localhost:"+port,"listen")
调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的被重写方法的位置调用
super.checkListen
。- 参数:
-
port
- 本地端口。 - 抛出:
-
SecurityException
- 如果调用线程没有权限在指定端口上监听。 - 参见:
-
checkAccept
Deprecated, for removal: This API element is subject to removal in a future version.如果调用线程不被允许从指定主机和端口号接受套接字连接,则抛出SecurityException
异常。此方法由
ServerSocket
类的accept
方法为当前安全管理器调用。此方法使用
SocketPermission(host+":"+port,"accept")
权限调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的被重写方法的位置调用
super.checkAccept
。- 参数:
-
host
- 套接字连接的主机名。 -
port
- 套接字连接的端口号。 - 抛出:
-
SecurityException
- 如果调用线程没有权限接受连接。 -
NullPointerException
- 如果host
参数为null
。 - 参见:
-
checkMulticast
Deprecated, for removal: This API element is subject to removal in a future version.如果调用线程不被允许使用(加入/离开/发送/接收)IP多播,则抛出SecurityException
异常。此方法使用
java.net.SocketPermission(maddr.getHostAddress(), "accept,connect")
权限调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的被重写方法的位置调用
super.checkMulticast
。- 参数:
-
maddr
- 要使用的Internet组地址。 - 抛出:
-
SecurityException
- 如果调用线程不被允许使用(加入/离开/发送/接收)IP多播。 -
NullPointerException
- 如果地址参数为null
。 - 自版本:
- 1.1
- 参见:
-
checkMulticast
Deprecated, for removal: This API element is subject to removal in a future version.如果调用线程不被允许使用(加入/离开/发送/接收)IP多播,则抛出SecurityException
异常。此方法使用
java.net.SocketPermission(maddr.getHostAddress(), "accept,connect")
权限调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的被重写方法的位置调用
super.checkMulticast
。- 参数:
-
maddr
- 要使用的Internet组地址。 -
ttl
- 在使用时的值,如果是多播发送。注意:此特定实现不使用ttl参数。 - 抛出:
-
SecurityException
- 如果调用线程不被允许使用(加入/离开/发送/接收)IP多播。 -
NullPointerException
- 如果地址参数为null
。 - 自版本:
- 1.1
- 参见:
-
checkPropertiesAccess
public void checkPropertiesAccess()Deprecated, for removal: This API element is subject to removal in a future version.如果调用线程不被允许访问或修改系统属性,则抛出SecurityException
异常。此方法由
System
类的getProperties
和setProperties
方法使用。此方法使用
PropertyPermission("*", "read,write")
权限调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的被重写方法的位置调用
super.checkPropertiesAccess
。- 抛出:
-
SecurityException
- 如果调用线程没有权限访问或修改系统属性。 - 参见:
-
checkPropertyAccess
Deprecated, for removal: This API element is subject to removal in a future version.如果调用线程不被允许访问具有指定key
名称的系统属性,则抛出SecurityException
异常。此方法由
System
类的getProperty
方法使用。此方法使用
PropertyPermission(key, "read")
权限调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的被重写方法的位置调用
super.checkPropertyAccess
。- 参数:
-
key
- 系统属性键。 - 抛出:
-
SecurityException
- 如果调用线程没有权限访问指定的系统属性。 -
NullPointerException
- 如果key
参数为null
。 -
IllegalArgumentException
- 如果key
为空。 - 参见:
-
checkPrintJobAccess
public void checkPrintJobAccess()Deprecated, for removal: This API element is subject to removal in a future version.如果调用线程不被允许发起打印作业请求,则抛出SecurityException
异常。此方法使用
RuntimePermission("queuePrintJob")
权限调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的被重写方法的位置调用
super.checkPrintJobAccess
。- 抛出:
-
SecurityException
- 如果调用线程没有权限发起打印作业请求。 - 自版本:
- 1.1
- 参见:
-
checkPackageAccess
Deprecated, for removal: This API element is subject to removal in a future version.如果调用线程不允许访问指定包,则抛出SecurityException
。在类加载期间,此方法可能会被类加载器的
loadClass
方法和Java虚拟机调用,以确保调用者被允许访问正在加载的类的包。此方法检查指定的包是否以任何
package.access
安全属性中的包开头或相等。实现还可以根据下面的附加受限包列表检查包。如果包受限,则使用RuntimePermission("accessClassInPackage."+pkg)
权限调用checkPermission(Permission)
。如果重写此方法,则应在重写方法的第一行调用
super.checkPackageAccess
。- 实现注意:
- 此实现还限制由平台类加载器或其祖先加载的模块的所有非导出包。"非导出包"指的是未向所有模块导出的包。具体而言,它指的是包要么根本不被其包含模块导出,要么以合格方式被其包含模块导出。
- 参数:
-
pkg
- 包名。 - 抛出:
-
SecurityException
- 如果调用线程没有权限访问指定包。 -
NullPointerException
- 如果包名参数为null
。 - 参见:
-
checkPackageDefinition
Deprecated, for removal: This API element is subject to removal in a future version.如果调用线程不允许在指定包中定义类,则抛出SecurityException
。此方法由某些类加载器的
loadClass
方法调用。此方法检查指定的包是否以任何
package.definition
安全属性中的包开头或相等。实现还可以根据下面的附加受限包列表检查包。如果包受限,则使用RuntimePermission("defineClassInPackage."+pkg)
权限调用checkPermission(Permission)
。如果重写此方法,则应在重写方法的第一行调用
super.checkPackageDefinition
。- 实现注意:
- 此实现还限制由平台类加载器或其祖先加载的模块的所有非导出包。"非导出包"指的是未向所有模块导出的包。具体而言,它指的是包要么根本不被其包含模块导出,要么以合格方式被其包含模块导出。
- 参数:
-
pkg
- 包名。 - 抛出:
-
SecurityException
- 如果调用线程没有权限在指定包中定义类。 -
NullPointerException
- 如果包名参数为null
。 - 参见:
-
checkSetFactory
public void checkSetFactory()Deprecated, for removal: This API element is subject to removal in a future version.如果调用线程不允许设置ServerSocket
或Socket
使用的套接字工厂,或者URL
使用的流处理程序工厂,则抛出SecurityException
。此方法使用
RuntimePermission("setFactory")
权限调用checkPermission
。如果您重写此方法,则应在通常会抛出异常的重写方法处调用
super.checkSetFactory
。- 抛出:
-
SecurityException
- 如果调用线程没有权限指定套接字工厂或流处理程序工厂。 - 参见:
-
checkSecurityAccess
Deprecated, for removal: This API element is subject to removal in a future version.确定是否应授予或拒绝具有指定权限目标名称的权限。如果允许请求的权限,则此方法会静默返回。如果拒绝,则会引发
SecurityException
。此方法为给定的权限目标名称创建一个
SecurityPermission
对象,并调用checkPermission
。有关可能的权限目标名称列表,请参阅
的文档。SecurityPermission
如果您重写此方法,则应在通常会抛出异常的重写方法处调用
super.checkSecurityAccess
。- 参数:
-
target
-SecurityPermission
的目标名称。 - 抛出:
-
SecurityException
- 如果调用线程没有请求访问的权限。 -
NullPointerException
- 如果target
为null。 -
IllegalArgumentException
- 如果target
为空。 - 自版本:
- 1.1
- 参见:
-
getThreadGroup
Deprecated, for removal: This API element is subject to removal in a future version.返回在调用此方法时正在创建的任何新线程实例化到其中的线程组。默认情况下,它返回当前线程的线程组。应该由特定安全管理器重写此方法以返回适当的线程组。- 返回:
- 实例化新线程的ThreadGroup
- 自版本:
- 1.1
- 参见:
-