# HG changeset patch # User lana # Date 1424392595 28800 # Node ID b8538bbb6f224ab1dabba579137099c166ad4724 # Parent 002c61f3a7cfeb86923c986ac07830226e72fbea# Parent d243fb6b055e082377afe2cdc2188a4f36ce0ccf Merge diff -r 002c61f3a7cf -r b8538bbb6f22 src/java.corba/share/classes/com/sun/corba/se/spi/orb/ORB.java --- a/src/java.corba/share/classes/com/sun/corba/se/spi/orb/ORB.java Thu Feb 19 11:23:57 2015 -0800 +++ b/src/java.corba/share/classes/com/sun/corba/se/spi/orb/ORB.java Thu Feb 19 16:36:35 2015 -0800 @@ -176,42 +176,9 @@ staticWrapper = ORBUtilSystemException.get( CORBALogDomains.RPC_PRESENTATION ) ; - boolean useDynamicStub = - ((Boolean)AccessController.doPrivileged( - new PrivilegedAction() { - public java.lang.Object run() { - return Boolean.valueOf( Boolean.getBoolean ( - ORBConstants.USE_DYNAMIC_STUB_PROPERTY ) ) ; - } - } - )).booleanValue() ; - - PresentationManager.StubFactoryFactory dynamicStubFactoryFactory = - (PresentationManager.StubFactoryFactory)AccessController.doPrivileged( - new PrivilegedAction() { - public java.lang.Object run() { - PresentationManager.StubFactoryFactory sff = - PresentationDefaults.getProxyStubFactoryFactory() ; + boolean useDynamicStub = false; - String className = System.getProperty( - ORBConstants.DYNAMIC_STUB_FACTORY_FACTORY_CLASS, - "com.sun.corba.se.impl.presentation.rmi.bcel.StubFactoryFactoryBCELImpl" ) ; - - try { - // First try the configured class name, if any - Class cls = - sun.corba.SharedSecrets.getJavaCorbaAccess().loadClass(className); - sff = (PresentationManager.StubFactoryFactory)cls.newInstance(); - } catch (Exception exc) { - // Use the default. Log the error as a warning. - staticWrapper.errorInSettingDynamicStubFactoryFactory( - exc, className ) ; - } - - return sff ; - } - } - ) ; + PresentationManager.StubFactoryFactory dynamicStubFactoryFactory = null; PresentationManager pm = new PresentationManagerImpl( useDynamicStub ) ; pm.setStubFactoryFactory( false, diff -r 002c61f3a7cf -r b8538bbb6f22 src/java.corba/share/classes/sun/corba/SharedSecrets.java --- a/src/java.corba/share/classes/sun/corba/SharedSecrets.java Thu Feb 19 11:23:57 2015 -0800 +++ b/src/java.corba/share/classes/sun/corba/SharedSecrets.java Thu Feb 19 16:36:35 2015 -0800 @@ -28,7 +28,9 @@ import com.sun.corba.se.impl.io.ValueUtility; import sun.misc.Unsafe; +import java.lang.reflect.Field; import java.security.AccessController; +import java.security.PrivilegedAction; /** A repository of "shared secrets", which are a mechanism for calling implementation-private methods in another package without @@ -41,9 +43,23 @@ // SharedSecrets cloned in corba repo to avoid build issues public class SharedSecrets { - private static final Unsafe unsafe = Unsafe.getUnsafe(); + private static final Unsafe unsafe = getUnsafe(); private static JavaCorbaAccess javaCorbaAccess; + private static Unsafe getUnsafe() { + PrivilegedAction pa = () -> { + Class unsafeClass = sun.misc.Unsafe.class ; + try { + Field f = unsafeClass.getDeclaredField("theUnsafe"); + f.setAccessible(true); + return (Unsafe) f.get(null); + } catch (Exception e) { + throw new Error(e); + } + }; + return AccessController.doPrivileged(pa); + } + public static JavaCorbaAccess getJavaCorbaAccess() { if (javaCorbaAccess == null) { // Ensure ValueUtility is initialized; we know that that class