[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