8009004: Better implementation of RMI connections

Better class handling.

Reviewed-by: alanb, dfuchs, skoivu, jbachorik
This commit is contained in:
Jean-Francois Denise 2013-03-26 09:12:18 +01:00 committed by Jean-Francois Denise
parent ea20eb7d97
commit fb31c370c7
2 changed files with 7 additions and 2 deletions

View File

@ -25,6 +25,8 @@
package com.sun.jmx.remote.util;
import sun.reflect.misc.ReflectUtil;
public class OrderClassLoaders extends ClassLoader {
public OrderClassLoaders(ClassLoader cl1, ClassLoader cl2) {
super(cl1);
@ -32,9 +34,10 @@ public class OrderClassLoaders extends ClassLoader {
this.cl2 = cl2;
}
protected Class<?> findClass(String name) throws ClassNotFoundException {
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
ReflectUtil.checkPackageAccess(name);
try {
return super.findClass(name);
return super.loadClass(name, resolve);
} catch (ClassNotFoundException cne) {
if (cl2 != null) {
return cl2.loadClass(name);

View File

@ -48,6 +48,7 @@ import javax.management.remote.JMXServerErrorException;
import javax.management.remote.NotificationResult;
import javax.management.remote.TargetedNotification;
import javax.security.auth.Subject;
import sun.reflect.misc.ReflectUtil;
import static com.sun.jmx.mbeanserver.Util.cast;
import com.sun.jmx.remote.internal.ServerCommunicatorAdmin;
@ -1792,6 +1793,7 @@ public class RMIConnectionImpl implements RMIConnection, Unreferenced {
@Override
protected Class<?> loadClass(String name, boolean resolve)
throws ClassNotFoundException {
ReflectUtil.checkPackageAccess(name);
try {
super.loadClass(name, resolve);
} catch(Exception e) {