Author: ron.sigal(a)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);
}
/**
Show replies by date