--- old/src/java.corba/share/classes/com/sun/corba/se/spi/orb/ORB.java 2015-09-24 15:49:14.001127743 +0100 +++ new/src/java.corba/share/classes/com/sun/corba/se/spi/orb/ORB.java 2015-09-24 15:49:13.937129086 +0100 @@ -25,6 +25,7 @@ package com.sun.corba.se.spi.orb; +import java.lang.reflect.Method; import java.util.Map ; import java.util.HashMap ; import java.util.Properties ; @@ -202,13 +203,33 @@ public static PresentationManager getPresentationManager() { SecurityManager sm = System.getSecurityManager(); - sun.misc.JavaAWTAccess javaAwtAccess = sun.misc.SharedSecrets.getJavaAWTAccess(); - if (sm != null && javaAwtAccess != null) { - final Object appletContext = javaAwtAccess.getAppletContext(); - if (appletContext != null) { - return pmContexts.computeIfAbsent(appletContext, - x -> setupPresentationManager()); - } + + if (sm != null) { + PresentationManager pm = AccessController.doPrivileged( + (PrivilegedAction) () -> { + try { + Class c = Class.forName("jdk.internal.misc.SharedSecrets"); + Method m = c.getDeclaredMethod("getJavaAWTAccess"); + final Object javaAwtAccess = m.invoke(null); + + if (sm != null && javaAwtAccess != null) { + c = Class.forName("jdk.internal.misc.JavaAWTAccess"); + m = c.getDeclaredMethod("getAppletContext"); + + final Object appletContext = m.invoke(javaAwtAccess); + if (appletContext != null) { + return pmContexts.computeIfAbsent(appletContext, + x -> setupPresentationManager()); + } + } + return null; + } catch (ReflectiveOperationException x) { + throw new InternalError(x); + } + }); + + if (pm != null) + return pm; } // No security manager or AppletAppContext