Homepage

netx.jnlp.runtime
Class JNLPSecurityManager

java.lang.Object
  extended by java.lang.SecurityManager
      extended by netx.jnlp.runtime.JNLPSecurityManager

 class JNLPSecurityManager
extends java.lang.SecurityManager

Security manager for JNLP environment. This security manager cannot be replaced as it always denies attempts to replace the security manager or policy.

The JNLP security manager tracks windows created by an application, allowing those windows to be disposed when the application exits but the JVM does not. If security is not enabled then the first application to call System.exit will halt the JVM.

Version:
$Revision: 1.17 $
Author:
Jon A. Maxwell (JAM) - initial author

Field Summary
 
Fields inherited from class java.lang.SecurityManager
inCheck
 
Constructor Summary
JNLPSecurityManager()
          Creates a JNLP SecurityManager.
 
Method Summary
 void checkExit(int status)
          Checks whether the caller can exit the system.
 void checkPermission(java.security.Permission perm)
          Throws a SecurityException if the permission is denied, otherwise return normally.
 boolean checkTopLevelWindow(java.lang.Object window)
          Checks whether the window can be displayed without an applet warning banner, and adds the window to the list of windows to be disposed when the calling application exits.
protected  ApplicationInstance getApplication()
          Return the current Application, or null if none can be determined.
protected  ApplicationInstance getApplication(java.lang.Class[] stack, int maxDepth)
          Return the current Application, or null.
protected  ApplicationInstance getApplication(java.awt.Window window)
          Return the application the opened the specified window (only call from event dispatch thread).
 java.lang.ThreadGroup getThreadGroup()
          Returns the application's thread group if the application can be determined; otherwise returns super.getThreadGroup()
 boolean isExitClass()
          Returns whether the exit class is present on the stack, or true if no exit class is set.
 void setExitClass(java.lang.Class exitClass)
          Set the exit class, which is the only class that can exit the JVM; if not set then any class can exit the JVM.
 
Methods inherited from class java.lang.SecurityManager
checkAccept, checkAccess, checkAccess, checkAwtEventQueueAccess, checkConnect, checkConnect, checkCreateClassLoader, checkDelete, checkExec, checkLink, checkListen, checkMemberAccess, checkMulticast, checkMulticast, checkPackageAccess, checkPackageDefinition, checkPermission, checkPrintJobAccess, checkPropertiesAccess, checkPropertyAccess, checkRead, checkRead, checkRead, checkSecurityAccess, checkSetFactory, checkSystemClipboardAccess, checkWrite, checkWrite, classDepth, classLoaderDepth, currentClassLoader, currentLoadedClass, getClassContext, getInCheck, getSecurityContext, inClass, inClassLoader
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JNLPSecurityManager

JNLPSecurityManager()
Creates a JNLP SecurityManager.

Method Detail

isExitClass

public boolean isExitClass()
Returns whether the exit class is present on the stack, or true if no exit class is set.


setExitClass

public void setExitClass(java.lang.Class exitClass)
                  throws java.lang.IllegalStateException
Set the exit class, which is the only class that can exit the JVM; if not set then any class can exit the JVM.

Parameters:
exitClass - the exit class
Throws:
java.lang.IllegalStateException - if the exit class is already set

getApplication

protected ApplicationInstance getApplication()
Return the current Application, or null if none can be determined.


getApplication

protected ApplicationInstance getApplication(java.awt.Window window)
Return the application the opened the specified window (only call from event dispatch thread).


getApplication

protected ApplicationInstance getApplication(java.lang.Class[] stack,
                                             int maxDepth)
Return the current Application, or null.


getThreadGroup

public java.lang.ThreadGroup getThreadGroup()
Returns the application's thread group if the application can be determined; otherwise returns super.getThreadGroup()

Overrides:
getThreadGroup in class java.lang.SecurityManager

checkPermission

public void checkPermission(java.security.Permission perm)
Throws a SecurityException if the permission is denied, otherwise return normally. This method always denies permission to change the security manager or policy.

Overrides:
checkPermission in class java.lang.SecurityManager

checkTopLevelWindow

public boolean checkTopLevelWindow(java.lang.Object window)
Checks whether the window can be displayed without an applet warning banner, and adds the window to the list of windows to be disposed when the calling application exits.

Overrides:
checkTopLevelWindow in class java.lang.SecurityManager

checkExit

public void checkExit(int status)
Checks whether the caller can exit the system. This method identifies whether the caller is a real call to Runtime.exec and has special behavior when returning from this method would exit the JVM and an exit class is set: if the caller is not the exit class then the calling application will be stopped and its resources destroyed (when possible), and an exception will be thrown to prevent the JVM from shutting down.

Calls not from Runtime.exit or with no exit class set will behave normally, and the exit class can always exit the JVM.

Overrides:
checkExit in class java.lang.SecurityManager

Homepage