[jboss-remoting-commits] JBoss Remoting SVN: r3861 - remoting2/branches/2.x/src/main/org/jboss/remoting/transporter.

jboss-remoting-commits at lists.jboss.org jboss-remoting-commits at lists.jboss.org
Wed Apr 2 00:33:20 EDT 2008


Author: ron.sigal at jboss.com
Date: 2008-04-02 00:33:20 -0400 (Wed, 02 Apr 2008)
New Revision: 3861

Modified:
   remoting2/branches/2.x/src/main/org/jboss/remoting/transporter/TransporterClient.java
Log:
JBREM-934: Put MBeanServerFactory.createMBeanServer() and Thread().getContextClassLoader() calls in AccessController.doPrivileged() calls.

Modified: remoting2/branches/2.x/src/main/org/jboss/remoting/transporter/TransporterClient.java
===================================================================
--- remoting2/branches/2.x/src/main/org/jboss/remoting/transporter/TransporterClient.java	2008-04-02 04:31:59 UTC (rev 3860)
+++ remoting2/branches/2.x/src/main/org/jboss/remoting/transporter/TransporterClient.java	2008-04-02 04:33:20 UTC (rev 3861)
@@ -39,6 +39,10 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
 import java.util.ArrayList;
 
 /**
@@ -131,7 +135,21 @@
       if (!services.isSetup())
       {
          // we need an MBeanServer to store our network registry and multicast detector services
-         MBeanServer server = MBeanServerFactory.createMBeanServer();
+         MBeanServer server = null;
+         try
+         {
+            server = (MBeanServer) AccessController.doPrivileged( new PrivilegedExceptionAction()
+            {
+               public Object run() throws Exception
+               {
+                  return MBeanServerFactory.createMBeanServer();
+               }
+            });
+         }
+         catch (PrivilegedActionException e)
+         {
+            throw (Exception) e.getCause();
+         }
 
          // multicast detector will detect new network registries that come online
          MulticastDetector detector = new MulticastDetector();
@@ -184,8 +202,14 @@
          }
          InvokerLocator locator = new InvokerLocator(locatorURI);
          TransporterClient client = new TransporterClient(locator, targetClass.getName());
-         return Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
-                                       new Class[]{targetClass}, client);
+         ClassLoader tcl = (ClassLoader) AccessController.doPrivileged( new PrivilegedAction()
+         {
+            public Object run()
+            {
+               return Thread.currentThread().getContextClassLoader();
+            }
+         });
+         return Proxy.newProxyInstance(tcl, new Class[]{targetClass}, client);
       }
    }
 
@@ -206,8 +230,14 @@
          }
          InvokerLocator locator = new InvokerLocator(locatorURI);
          TransporterClient client = new TransporterClient(locator, targetClass.getName(), loadBalancer);
-         return Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
-                                       new Class[]{targetClass}, client);
+         ClassLoader tcl = (ClassLoader) AccessController.doPrivileged( new PrivilegedAction()
+         {
+            public Object run()
+            {
+               return Thread.currentThread().getContextClassLoader();
+            }
+         });
+         return Proxy.newProxyInstance(tcl, new Class[]{targetClass}, client);
    }
 
    /**
@@ -235,8 +265,14 @@
    public static Object createTransporterClient(InvokerLocator locator, Class targetClass) throws Exception
    {
       TransporterClient client = new TransporterClient(locator, targetClass.getName());
-      return Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
-                                    new Class[]{targetClass}, client);
+      ClassLoader tcl = (ClassLoader) AccessController.doPrivileged( new PrivilegedAction()
+      {
+         public Object run()
+         {
+            return Thread.currentThread().getContextClassLoader();
+         }
+      });
+      return Proxy.newProxyInstance(tcl, new Class[]{targetClass}, client);
    }
 
    /**




More information about the jboss-remoting-commits mailing list