# HG changeset patch # User rpatil # Date 1519790386 28800 # Node ID 8d0a2e2ffc6711bdbe18da1640c439244abd4da1 # Parent c09865dadf4852650bf7d060ef0b1d24c99d8bbe 8198494: 8u171 and 8u172 - Build failure on non-SE Linux Platforms Reviewed-by: dfuchs, rriggs, coffeys, aefimov diff -r c09865dadf48 -r 8d0a2e2ffc67 src/share/classes/com/sun/corba/se/impl/ior/StubIORImpl.java --- a/src/share/classes/com/sun/corba/se/impl/ior/StubIORImpl.java Wed Feb 07 00:10:57 2018 -0800 +++ b/src/share/classes/com/sun/corba/se/impl/ior/StubIORImpl.java Tue Feb 27 19:59:46 2018 -0800 @@ -31,9 +31,9 @@ package com.sun.corba.se.impl.ior; -import java.io.ObjectInputStream ; -import java.io.ObjectOutputStream ; -import java.io.IOException ; +import java.io.IOException; +import java.io.ObjectOutputStream; +import sun.corba.SharedSecrets; import org.omg.CORBA.ORB ; @@ -46,7 +46,6 @@ // other vendor's ORBs. import com.sun.corba.se.spi.presentation.rmi.StubAdapter ; import com.sun.corba.se.impl.orbutil.HexOutputStream ; -import sun.corba.SharedSecrets; /** * This class implements a very simply IOR representation diff -r c09865dadf48 -r 8d0a2e2ffc67 src/share/classes/sun/corba/SharedSecrets.java --- a/src/share/classes/sun/corba/SharedSecrets.java Wed Feb 07 00:10:57 2018 -0800 +++ b/src/share/classes/sun/corba/SharedSecrets.java Tue Feb 27 19:59:46 2018 -0800 @@ -29,8 +29,7 @@ import sun.misc.JavaOISAccess; import sun.misc.Unsafe; -import java.io.ObjectInputStream; -import java.security.AccessController; +import java.lang.reflect.Method; /** A repository of "shared secrets", which are a mechanism for calling implementation-private methods in another package without @@ -45,8 +44,32 @@ public class SharedSecrets { private static final Unsafe unsafe = Unsafe.getUnsafe(); private static JavaCorbaAccess javaCorbaAccess; + private static final Method getJavaOISAccessMethod; private static JavaOISAccess javaOISAccess; + // Initialize getJavaOISAccessMethod using reflection. + static { + try { + Class sharedSecret = Class.forName("sun.misc.SharedSecrets"); + getJavaOISAccessMethod = + sharedSecret.getMethod("getJavaOISAccess"); + } catch (Exception e) { + throw new ExceptionInInitializerError(e); + } + } + + public static JavaOISAccess getJavaOISAccess() { + if (javaOISAccess == null) { + try { + javaOISAccess = + (JavaOISAccess) getJavaOISAccessMethod.invoke(null); + } catch (Exception e) { + throw new ExceptionInInitializerError(e); + } + } + return javaOISAccess; + } + public static JavaCorbaAccess getJavaCorbaAccess() { if (javaCorbaAccess == null) { // Ensure ValueUtility is initialized; we know that that class @@ -59,16 +82,4 @@ public static void setJavaCorbaAccess(JavaCorbaAccess access) { javaCorbaAccess = access; } - - public static void setJavaOISAccess(JavaOISAccess access) { - javaOISAccess = access; - } - - public static JavaOISAccess getJavaOISAccess() { - if (javaOISAccess == null) - unsafe.ensureClassInitialized(ObjectInputStream.class); - - return javaOISAccess; - } - }