java.security.AccessControlException Thrown In the
Execution of
java.beans.Introspector.setBeanInfoSearchPath()
Method
Symptoms
When running an applet in a browser by using the Sun
JavaTM Runtime Environment
(JRETM) implementation, a
java.security.AccessControlException is thrown in the
execution of the
java.beans.Introspector.setBeanInfoSearchPath() method
as shown below:
java.security.AccessControlException: access denied
(java.util.PropertyPermission * read,write)
at
java.security.AccessControlContext.checkPermission(Unknown
Source)
at
java.security.AccessController.checkPermission(Unknown
Source)
at
java.lang.SecurityManager.checkPermission(Unknown Source)
at
java.lang.SecurityManager.checkPropertiesAccess(Unknown
Source)
at
java.beans.Introspector.setBeanInfoSearchPath(Unknown Source)
at ....
The same applet runs without any error with the Microsoft
Virtual Machine (VM).
Cause
The Introspector.setBeanInfoSearchPath() method
call can change the list of package names used for finding
BeanInfo classes. If more than one applet is running
in the VM, an untrusted applet could call this method to redirect
other applets to look up BeanInfo in unexpected
packages. This is a flaw in security.
A security check for java.util.PropertyPermission
is added to Introspector.setBeanInfoSearchPath() method in the JRE
to address the security concern. If the applet is unsigned and it
calls this method, a
java.security.AccessControlException is thrown.
Resolution
To fix the above causes:
Sign the applet by using the Java Development Kit (JDK)
jarsigner tool, so that the applet runs as a trusted
applet and has permissions to call the
Introspector.setBeanInfoSearchPath() method.
Rearchitect the applet code to avoid the call to
Introspector.setBeanInfoSearchPath(). For example,
instead of relying on the BeanInfo class search path,
use a fully qualified package name for searching the
BeanInfo.