Author: ron.sigal(a)jboss.com
Date: 2008-03-20 21:31:14 -0400 (Thu, 20 Mar 2008)
New Revision: 3698
Modified:
remoting2/branches/2.x/src/main/org/jboss/remoting/MicroRemoteClientInvoker.java
Log:
JBREM-934: Put classloader creation in AccessController.doPrivileged() call.
Modified:
remoting2/branches/2.x/src/main/org/jboss/remoting/MicroRemoteClientInvoker.java
===================================================================
---
remoting2/branches/2.x/src/main/org/jboss/remoting/MicroRemoteClientInvoker.java 2008-03-21
01:30:05 UTC (rev 3697)
+++
remoting2/branches/2.x/src/main/org/jboss/remoting/MicroRemoteClientInvoker.java 2008-03-21
01:31:14 UTC (rev 3698)
@@ -12,6 +12,10 @@
import org.jboss.util.id.GUID;
import java.io.IOException;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -116,7 +120,7 @@
// class loader. This allows to load remoting classes as well as user's
// classes. If possible, will simply reset context classloader on existing
// RemotingClassLoader.
- ClassLoader contextClassLoader =
Thread.currentThread().getContextClassLoader();
+ final ClassLoader contextClassLoader =
Thread.currentThread().getContextClassLoader();
if (unmarshaller instanceof UpdateableClassloaderUnMarshaller)
{
UpdateableClassloaderUnMarshaller uclum = (UpdateableClassloaderUnMarshaller)
unmarshaller;
@@ -128,13 +132,26 @@
}
else
{
- rcl = new RemotingClassLoader(getClassLoader(), contextClassLoader);
+ rcl = (RemotingClassLoader)AccessController.doPrivileged( new
PrivilegedAction()
+ {
+ public Object run()
+ {
+ return new RemotingClassLoader(getClassLoader(),
contextClassLoader);
+ }
+ });
+
unmarshaller.setClassLoader(rcl);
}
}
else
{
- rcl = new RemotingClassLoader(getClassLoader(), contextClassLoader);
+ rcl = (RemotingClassLoader)AccessController.doPrivileged( new
PrivilegedAction()
+ {
+ public Object run()
+ {
+ return new RemotingClassLoader(getClassLoader(), contextClassLoader);
+ }
+ });
unmarshaller.setClassLoader(rcl);
}
}