java.security.AccessControlException
Thrown In the Execution ofjava.beans.Introspector.setBeanInfoSearchPath()
Method
SymptomsWhen 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 thejava.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 findingBeanInfo
classes. If more than one applet is running in the VM, an untrusted applet could call this method to redirect other applets to look upBeanInfo
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, ajava.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 theIntrospector.setBeanInfoSearchPath()
method.- Rearchitect the applet code to avoid the call to
Introspector.setBeanInfoSearchPath()
. For example, instead of relying on theBeanInfo
class search path, use a fully qualified package name for searching theBeanInfo
.Related Information
See jarsigner, which is the JAR Signing and Verification Tool.