Author: alessio.soldano(a)jboss.com
Date: 2012-12-19 05:37:43 -0500 (Wed, 19 Dec 2012)
New Revision: 17138
Modified:
stack/cxf/trunk/modules/client/src/main/java/org/jboss/wsf/stack/cxf/client/ProviderImpl.java
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/security/authentication/SubjectCreator.java
Log:
[JBWS-3573] Create DelegateClassloader in a doPrivileged action
Modified:
stack/cxf/trunk/modules/client/src/main/java/org/jboss/wsf/stack/cxf/client/ProviderImpl.java
===================================================================
---
stack/cxf/trunk/modules/client/src/main/java/org/jboss/wsf/stack/cxf/client/ProviderImpl.java 2012-12-19
10:08:52 UTC (rev 17137)
+++
stack/cxf/trunk/modules/client/src/main/java/org/jboss/wsf/stack/cxf/client/ProviderImpl.java 2012-12-19
10:37:43 UTC (rev 17138)
@@ -225,7 +225,7 @@
}
//then setup a new TCCL having visibility over both the client path (JBossWS
//jaxws-client module on AS7) and the the former TCCL (i.e. the deployment
classloader)
- setContextClassLoader(new DelegateClassLoader(clientClassLoader,
origClassLoader));
+ setContextClassLoader(createDelegateClassLoader(clientClassLoader,
origClassLoader));
return true;
}
return false;
@@ -243,6 +243,25 @@
}
return bus;
}
+
+ private static DelegateClassLoader createDelegateClassLoader(final ClassLoader
clientClassLoader, final ClassLoader origClassLoader)
+ {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm == null)
+ {
+ return new DelegateClassLoader(clientClassLoader, origClassLoader);
+ }
+ else
+ {
+ return AccessController.doPrivileged(new
PrivilegedAction<DelegateClassLoader>()
+ {
+ public DelegateClassLoader run()
+ {
+ return new DelegateClassLoader(clientClassLoader, origClassLoader);
+ }
+ });
+ }
+ }
/**
* Get context classloader.
Modified:
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/security/authentication/SubjectCreator.java
===================================================================
---
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/security/authentication/SubjectCreator.java 2012-12-19
10:08:52 UTC (rev 17137)
+++
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/security/authentication/SubjectCreator.java 2012-12-19
10:37:43 UTC (rev 17138)
@@ -24,6 +24,8 @@
import static org.jboss.wsf.stack.cxf.Loggers.SECURITY_LOGGER;
import static org.jboss.wsf.stack.cxf.Messages.MESSAGES;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.security.Principal;
import java.util.Calendar;
import java.util.TimeZone;
@@ -88,7 +90,7 @@
{
ClassLoader tccl = SecurityActions.getContextClassLoader();
//allow PicketBox to see jbossws modules' classes
- SecurityActions.setContextClassLoader(new
DelegateClassLoader(ClassLoaderProvider.getDefaultProvider().getServerIntegrationClassLoader(),
tccl));
+
SecurityActions.setContextClassLoader(createDelegateClassLoader(ClassLoaderProvider.getDefaultProvider().getServerIntegrationClassLoader(),
tccl));
try
{
if (ctx.isValid(principal, password, subject) == false)
@@ -161,6 +163,25 @@
{
this.decodeNonce = decodeNonce;
}
+
+ private static DelegateClassLoader createDelegateClassLoader(final ClassLoader
clientClassLoader, final ClassLoader origClassLoader)
+ {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm == null)
+ {
+ return new DelegateClassLoader(clientClassLoader, origClassLoader);
+ }
+ else
+ {
+ return AccessController.doPrivileged(new
PrivilegedAction<DelegateClassLoader>()
+ {
+ public DelegateClassLoader run()
+ {
+ return new DelegateClassLoader(clientClassLoader, origClassLoader);
+ }
+ });
+ }
+ }
private static Calendar unmarshalDateTime(String value)
{
Show replies by date