securitymanager.html

来自「j2se5-api-zh,java文档的中文版本」· HTML 代码 · 共 1,114 行 · 第 1/5 页

HTML
1,114
字号
 <p>希望具有更为严格策略的应用程序应该重写此方法。如果重写此方法,那么重写它的方法应该进行额外的检查,查看调用线程是否具有 <code>RuntimePermission(&quot;modifyThread&quot;)</code> 权限,如果是,则此方法不执行任何操作。这样做是为了确保允许那些被授予该权限的代码(如 JDK 本身)能够操作所有线程。 <p>如果重写此方法,那么应该由已重写方法中的第一条语句调用 <code>super.checkAccess</code>,或者应该在已重写方法中放入等效的安全检查代码。<P><DD><DL><DT><B>参数:</B><DD><CODE>t</CODE> - 要检查的线程。<DT><B>抛出:</B><DD><CODE><A HREF="SecurityException.html" title="java.lang 中的类">SecurityException</A></CODE> - 如果调用线程没有修改线程的权限。<DD><CODE><A HREF="NullPointerException.html" title="java.lang 中的类">NullPointerException</A></CODE> - 如果线程参数为 <code>null</code>。<DT><B>另请参见:</B><DD><A HREF="Thread.html#resume()"><CODE>resume</CODE></A>, <A HREF="Thread.html#setDaemon(boolean)"><CODE>setDaemon</CODE></A>, <A HREF="Thread.html#setName(java.lang.String)"><CODE>setName</CODE></A>, <A HREF="Thread.html#setPriority(int)"><CODE>setPriority</CODE></A>, <A HREF="Thread.html#stop()"><CODE>stop</CODE></A>, <A HREF="Thread.html#suspend()"><CODE>suspend</CODE></A>, <A HREF="SecurityManager.html#checkPermission(java.security.Permission)"><CODE>checkPermission</CODE></A></DL></DD></DL><HR><A NAME="checkAccess(java.lang.ThreadGroup)"><!-- --></A><H3>checkAccess</H3><PRE>public void <B>checkAccess</B>(<A HREF="ThreadGroup.html" title="java.lang 中的类">ThreadGroup</A>&nbsp;g)</PRE><DL><DD>如果不允许调用线程修改线程组参数,则抛出 <code>SecurityException</code>。 <p>当创建新的子线程或子线程组时,由 <code>ThreadGroup</code> 类的 <code>setDaemon</code>、<code>setMaxPriority</code>、<code>stop</code>、<code>suspend</code>、<code>resume</code> 和 <code>destroy</code> 方法为当前的安全管理器调用此方法。 <p>如果该线程组是一个系统线程组(具有 <code>null</code> 父线程),那么此方法使用 <code>RuntimePermission(&quot;modifyThreadGroup&quot;)</code> 权限调用 <code>checkPermission</code>。如果该线程组<i>不</i> 是一个系统线程组,则此方法不执行任何操作。 <p>希望具有更为严格策略的应用程序应该重写此方法。如果重写此方法,那么重写它的方法应该进行额外的检查,查看调用线程是否具有 <code>RuntimePermission(&quot;modifyThreadGroup&quot;)</code> 权限,如果是,则此方法不执行任何操作。这样做是为了确保允许那些被授予该权限的代码(如 JDK 本身)能够操作所有线程。 <p>如果重写此方法,那么应该由已重写方法中的第一条语句调用 <code>super.checkAccess</code>,或者应该在已重写方法中放入等效的安全检查。<P><DD><DL><DT><B>参数:</B><DD><CODE>g</CODE> - 要检查的线程组。<DT><B>抛出:</B><DD><CODE><A HREF="SecurityException.html" title="java.lang 中的类">SecurityException</A></CODE> - 如果调用线程没有修改线程组的权限。<DD><CODE><A HREF="NullPointerException.html" title="java.lang 中的类">NullPointerException</A></CODE> - 如果线程组参数为 <code>null</code>。<DT><B>另请参见:</B><DD><A HREF="ThreadGroup.html#destroy()"><CODE>destroy</CODE></A>, <A HREF="ThreadGroup.html#resume()"><CODE>resume</CODE></A>, <A HREF="ThreadGroup.html#setDaemon(boolean)"><CODE>setDaemon</CODE></A>, <A HREF="ThreadGroup.html#setMaxPriority(int)"><CODE>setMaxPriority</CODE></A>, <A HREF="ThreadGroup.html#stop()"><CODE>stop</CODE></A>, <A HREF="ThreadGroup.html#suspend()"><CODE>suspend</CODE></A>, <A HREF="SecurityManager.html#checkPermission(java.security.Permission)"><CODE>checkPermission</CODE></A></DL></DD></DL><HR><A NAME="checkExit(int)"><!-- --></A><H3>checkExit</H3><PRE>public void <B>checkExit</B>(int&nbsp;status)</PRE><DL><DD>如果不允许调用线程使用特定的状态码暂停 Java 虚拟机,则抛出 <code>SecurityException</code>。 <p>由 <code>Runtime</code> 类的 <code>exit</code> 方法为当前的安全管理器调用此方法。状态 <code>0</code> 表示成功,其他值则表示各种错误。 <p>此方法用 <code>RuntimePermission(&quot;exitVM&quot;)</code> 权限调用 <code>checkPermission</code>。 <p>如果重写此方法,那么通常应该在已重写方法将要抛出异常时调用 <code>super.checkExit</code>。<P><DD><DL><DT><B>参数:</B><DD><CODE>status</CODE> - 退出状态。<DT><B>抛出:</B><DD><CODE><A HREF="SecurityException.html" title="java.lang 中的类">SecurityException</A></CODE> - 如果调用线程没有用指定的状态暂停 Java 虚拟机的权限。<DT><B>另请参见:</B><DD><A HREF="Runtime.html#exit(int)"><CODE>exit</CODE></A>, <A HREF="SecurityManager.html#checkPermission(java.security.Permission)"><CODE>checkPermission</CODE></A></DL></DD></DL><HR><A NAME="checkExec(java.lang.String)"><!-- --></A><H3>checkExec</H3><PRE>public void <B>checkExec</B>(<A HREF="String.html" title="java.lang 中的类">String</A>&nbsp;cmd)</PRE><DL><DD>如果不允许调用线程创建一个子进程,则抛出 <code>SecurityException</code>。 <p>由 <code>Runtime</code> 类的 <code>exec</code> 方法为当前的安全管理器调用此方法。 <p>如果 cmd 是绝对路径,那么此方法使用 <code>FilePermission(cmd,&quot;execute&quot;)</code> 权限调用 <code>checkPermission</code>,否则用 <code>FilePermission(&quot;&lt;&lt;ALL FILES&gt;&gt;&quot;,&quot;execute&quot;)</code> 权限调用 <code>checkPermission</code>。 <p>如果重写此方法,那么通常应该在已重写方法将要抛出异常时调用 <code>super.checkExec</code>。<P><DD><DL><DT><B>参数:</B><DD><CODE>cmd</CODE> - 指定的系统命令。<DT><B>抛出:</B><DD><CODE><A HREF="SecurityException.html" title="java.lang 中的类">SecurityException</A></CODE> - 如果调用线程没有创建子进程的权限。<DD><CODE><A HREF="NullPointerException.html" title="java.lang 中的类">NullPointerException</A></CODE> - 如果 <code>cmd</code> 参数为 <code>null</code>。<DT><B>另请参见:</B><DD><A HREF="Runtime.html#exec(java.lang.String)"><CODE>Runtime.exec(java.lang.String)</CODE></A>, <A HREF="Runtime.html#exec(java.lang.String, java.lang.String[])"><CODE>Runtime.exec(java.lang.String, java.lang.String[])</CODE></A>, <A HREF="Runtime.html#exec(java.lang.String[])"><CODE>Runtime.exec(java.lang.String[])</CODE></A>, <A HREF="Runtime.html#exec(java.lang.String[], java.lang.String[])"><CODE>Runtime.exec(java.lang.String[], java.lang.String[])</CODE></A>, <A HREF="SecurityManager.html#checkPermission(java.security.Permission)"><CODE>checkPermission</CODE></A></DL></DD></DL><HR><A NAME="checkLink(java.lang.String)"><!-- --></A><H3>checkLink</H3><PRE>public void <B>checkLink</B>(<A HREF="String.html" title="java.lang 中的类">String</A>&nbsp;lib)</PRE><DL><DD>如果不允许调用线程动态链接由字符串参数文件指定的库代码,则抛出 <code>SecurityException</code>。此方法中的参数可以是一个简单的库名,或者是一个完整的文件名。 <p>由 <code>Runtime</code> 类的 <code>load</code> 和 <code>loadLibrary</code> 方法为当前的安全管理器调用此方法。 <p>此方法用 <code>RuntimePermission(&quot;loadLibrary.&quot;+lib)</code> 权限调用 <code>checkPermission</code>。 <p>如果重写此方法,那么通常应该在已重写方法将要抛出异常时调用 <code>super.checkLink</code>。<P><DD><DL><DT><B>参数:</B><DD><CODE>lib</CODE> - 库名。<DT><B>抛出:</B><DD><CODE><A HREF="SecurityException.html" title="java.lang 中的类">SecurityException</A></CODE> - 如果调用线程没有动态地链接该库的权限。<DD><CODE><A HREF="NullPointerException.html" title="java.lang 中的类">NullPointerException</A></CODE> - 如果 <code>lib</code> 参数为 <code>null</code>。<DT><B>另请参见:</B><DD><A HREF="Runtime.html#load(java.lang.String)"><CODE>Runtime.load(java.lang.String)</CODE></A>, <A HREF="Runtime.html#loadLibrary(java.lang.String)"><CODE>Runtime.loadLibrary(java.lang.String)</CODE></A>, <A HREF="SecurityManager.html#checkPermission(java.security.Permission)"><CODE>checkPermission</CODE></A></DL></DD></DL><HR><A NAME="checkRead(java.io.FileDescriptor)"><!-- --></A><H3>checkRead</H3><PRE>public void <B>checkRead</B>(java.io.FileDescriptor&nbsp;fd)</PRE><DL><DD>如果不允许调用线程从指定的文件描述符进行读取,则抛出 <code>SecurityException</code>。 <p>此方法用 <code>RuntimePermission(&quot;readFileDescriptor&quot;)</code> 权限调用 <code>checkPermission</code>。 <p>如果重写此方法,那么通常应该在已重写方法将要抛出异常时调用 <code>super.checkRead</code>。<P><DD><DL><DT><B>参数:</B><DD><CODE>fd</CODE> - 取决于系统的文件描述符。<DT><B>抛出:</B><DD><CODE><A HREF="SecurityException.html" title="java.lang 中的类">SecurityException</A></CODE> - 如果调用线程没有访问指定文件描述符的权限。<DD><CODE><A HREF="NullPointerException.html" title="java.lang 中的类">NullPointerException</A></CODE> - 如果文件描述符参数为 <code>null</code>。<DT><B>另请参见:</B><DD><CODE>FileDescriptor</CODE>, <A HREF="SecurityManager.html#checkPermission(java.security.Permission)"><CODE>checkPermission</CODE></A></DL></DD></DL><HR><A NAME="checkRead(java.lang.String)"><!-- --></A><H3>checkRead</H3><PRE>public void <B>checkRead</B>(<A HREF="String.html" title="java.lang 中的类">String</A>&nbsp;file)</PRE><DL><DD>如果不允许调用线程读取由字符串参数指定的文件,则抛出 <code>SecurityException</code>。 <p>此方法用 <code>FilePermission(file,&quot;read&quot;)</code> 权限调用 <code>checkPermission</code>。 <p>如果重写此方法,那么通常应该在已重写方法将要抛出异常时调用 <code>super.checkRead</code>。<P><DD><DL><DT><B>参数:</B><DD><CODE>file</CODE> - 取决于系统的文件名。<DT><B>抛出:</B><DD><CODE><A HREF="SecurityException.html" title="java.lang 中的类">SecurityException</A></CODE> - 如果调用线程没有访问指定文件的权限。<DD><CODE><A HREF="NullPointerException.html" title="java.lang 中的类">NullPointerException</A></CODE> - 如果 <code>file</code> 参数为 <code>null</code>。<DT><B>另请参见:</B><DD><A HREF="SecurityManager.html#checkPermission(java.security.Permission)"><CODE>checkPermission</CODE></A></DL></DD></DL><HR><A NAME="checkRead(java.lang.String, java.lang.Object)"><!-- --></A><H3>checkRead</H3><PRE>public void <B>checkRead</B>(<A HREF="String.html" title="java.lang 中的类">String</A>&nbsp;file,                      <A HREF="Object.html" title="java.lang 中的类">Object</A>&nbsp;context)</PRE><DL><DD>如果不允许指定的安全上下文读取由字符串参数所指定的文件,则抛出 <code>SecurityException</code>。该上下文必须是以前调用 <code>getSecurityContext</code> 所返回的安全上下文。 <p> 如果 <code>context</code> 是 <code>AccessControlContext</code> 的一个实例,则用 <code>FilePermission(file,&quot;read&quot;)</code> 权限调用 <code>AccessControlContext.checkPermission</code> 方法。<p> 如果 <code>context</code> 不是 <code>AccessControlContext</code> 的一个实例,则抛出 <code>SecurityException</code>。 <p>如果重写此方法,那么通常应该在已重写方法将要抛出异常时调用 <code>super.checkRead</code>。<P><DD><DL><DT><B>参数:</B><DD><CODE>file</CODE> - 取决于系统的文件名。<DD><CODE>context</CODE> - 取决于系统的安全上下文。<DT><B>抛出:</B><DD><CODE><A HREF="SecurityException.html" title="java.lang 中的类">SecurityException</A></CODE> - 如果指定的安全上下文不是 <code>AccessControlContext</code> 的一个实例(如为 <code>null</code>),或者没有读取指定文件的权限。<DD><CODE><A HREF="NullPointerException.html" title="java.lang 中的类">NullPointerException</A></CODE> - 如果 <code>file</code> 参数为 <code>null</code>。<DT><B>另请参见:</B><DD><A HREF="SecurityManager.html#getSecurityContext()"><CODE>getSecurityContext()</CODE></A>, <CODE>AccessControlContext.checkPermission(java.security.Permission)</CODE></DL></DD></DL><HR><A NAME="checkWrite(java.io.FileDescriptor)"><!-- --></A><H3>checkWrite</H3><PRE>public void <B>checkWrite</B>(java.io.FileDescriptor&nbsp;fd)</PRE><DL><DD>如果不允许调用线程写入指定的文件描述符,则抛出 <code>SecurityException</code>。 <p>此方法用 <code>RuntimePermission(&quot;writeFileDescriptor&quot;)</code> 权限调用 <code>checkPermission</code>。 <p>如果重写此方法,那么通常应该在已重写方法将要抛出异常时调用 <code>super.checkWrite</code>。<P><DD><DL><DT><B>参数:</B><DD><CODE>fd</CODE> - 取决于系统的文件描述符。<DT><B>抛出:</B><DD><CODE><A HREF="SecurityException.html" title="java.lang 中的类">SecurityException</A></CODE> - 如果调用的方法没有访问指定文件描述符的权限。<DD><CODE><A HREF="NullPointerException.html" title="java.lang 中的类">NullPointerException</A></CODE> - 如果文件描述符参数为 <code>null</code>。<DT><B>另请参见:</B><DD><CODE>FileDescriptor</CODE>, <A HREF="SecurityManager.html#checkPermission(java.security.Permission)"><CODE>checkPermission</CODE></A></DL></DD></DL><HR><A NAME="checkWrite(java.lang.String)"><!-- --></A><H3>checkWrite</H3><PRE>public void <B>checkWrite</B>(<A HREF="String.html" title="java.lang 中的类">String</A>&nbsp;file)</PRE><DL><DD>如果不允许调用线程写由字符串参数指定的文件,则抛出 <code>SecurityException</code>。 <p>此方法用 <code>FilePermission(file,&quot;write&quot;)</code> 权限调用 <code>checkPermission</code>。 <p>如果重写此方法,那么通常应该在已重写方法将要抛出异常时调用 <code>super.checkWrite</code>。<P><DD><DL><DT><B>参数:</B><DD><CODE>file</CODE> - 取决于系统的文件名。<DT><B>抛出:</B><DD><CODE><A HREF="SecurityException.html" title="java.lang 中的类">SecurityException</A></CODE> - 如果调用线程没有访问指定文件的权限。<DD><CODE><A HREF="NullPointerException.html" title="java.lang 中的类">NullPointerException</A></CODE> - 如果 <code>file</code> 参数为 <code>null</

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?