[mod_cluster-commits] mod_cluster SVN: r788 - in trunk/container: catalina-standalone/src/main/java/org/jboss/modcluster/container/catalina/standalone and 1 other directory.
do-not-reply at jboss.org
do-not-reply at jboss.org
Wed Apr 4 12:11:41 EDT 2012
Author: pferraro
Date: 2012-04-04 12:11:40 -0400 (Wed, 04 Apr 2012)
New Revision: 788
Modified:
trunk/container/catalina-standalone/src/main/java/org/jboss/modcluster/container/catalina/standalone/ModClusterListener.java
trunk/container/catalina/src/main/java/org/jboss/modcluster/container/catalina/ServiceLoaderCatalinaFactory.java
Log:
Use privileged actions where appropriate.
Modified: trunk/container/catalina/src/main/java/org/jboss/modcluster/container/catalina/ServiceLoaderCatalinaFactory.java
===================================================================
--- trunk/container/catalina/src/main/java/org/jboss/modcluster/container/catalina/ServiceLoaderCatalinaFactory.java 2012-04-04 15:55:11 UTC (rev 787)
+++ trunk/container/catalina/src/main/java/org/jboss/modcluster/container/catalina/ServiceLoaderCatalinaFactory.java 2012-04-04 16:11:40 UTC (rev 788)
@@ -1,5 +1,7 @@
package org.jboss.modcluster.container.catalina;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.ServiceLoader;
import org.jboss.modcluster.container.Context;
@@ -15,15 +17,21 @@
private final ConnectorFactory connectorFactory;
private final ProxyConnectorProvider provider;
- private static <T> T load(Class<T> targetClass, Class<? extends T> defaultClass) {
- for (T value : ServiceLoader.load(targetClass, targetClass.getClassLoader())) {
- return value;
- }
- try {
- return defaultClass.newInstance();
- } catch (Exception e) {
- throw new IllegalStateException(e);
- }
+ private static <T> T load(final Class<T> targetClass, final Class<? extends T> defaultClass) {
+ PrivilegedAction<T> action = new PrivilegedAction<T>() {
+ @Override
+ public T run() {
+ for (T value : ServiceLoader.load(targetClass, targetClass.getClassLoader())) {
+ return value;
+ }
+ try {
+ return defaultClass.newInstance();
+ } catch (Exception e) {
+ throw new IllegalStateException(e);
+ }
+ }
+ };
+ return AccessController.doPrivileged(action);
}
public ServiceLoaderCatalinaFactory(ProxyConnectorProvider provider) {
Modified: trunk/container/catalina-standalone/src/main/java/org/jboss/modcluster/container/catalina/standalone/ModClusterListener.java
===================================================================
--- trunk/container/catalina-standalone/src/main/java/org/jboss/modcluster/container/catalina/standalone/ModClusterListener.java 2012-04-04 15:55:11 UTC (rev 787)
+++ trunk/container/catalina-standalone/src/main/java/org/jboss/modcluster/container/catalina/standalone/ModClusterListener.java 2012-04-04 16:11:40 UTC (rev 788)
@@ -23,6 +23,8 @@
import java.lang.management.ManagementFactory;
import java.net.InetSocketAddress;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.Collections;
import java.util.Map;
import java.util.ServiceConfigurationError;
@@ -78,7 +80,7 @@
private final ModClusterServiceMBean service;
private final LifecycleListener listener;
- private Class<? extends LoadMetric> loadMetricClass = BusyConnectorsLoadMetric.class;
+ Class<? extends LoadMetric> loadMetricClass = BusyConnectorsLoadMetric.class;
private int decayFactor = DynamicLoadBalanceFactorProvider.DEFAULT_DECAY_FACTOR;
private int history = DynamicLoadBalanceFactorProvider.DEFAULT_HISTORY;
private double capacity = LoadMetric.DEFAULT_CAPACITY;
@@ -94,10 +96,16 @@
}
private LifecycleListenerFactory loadFactory() {
- for (LifecycleListenerFactory factory: ServiceLoader.load(LifecycleListenerFactory.class, LifecycleListenerFactory.class.getClassLoader())) {
- return factory;
- }
- throw new ServiceConfigurationError(String.format("No %s service provider found.", LifecycleListenerFactory.class.getName()));
+ PrivilegedAction<LifecycleListenerFactory> action = new PrivilegedAction<LifecycleListenerFactory>() {
+ @Override
+ public LifecycleListenerFactory run() {
+ for (LifecycleListenerFactory factory: ServiceLoader.load(LifecycleListenerFactory.class, LifecycleListenerFactory.class.getClassLoader())) {
+ return factory;
+ }
+ throw new ServiceConfigurationError(String.format("No %s service provider found.", LifecycleListenerFactory.class.getName()));
+ }
+ };
+ return AccessController.doPrivileged(action);
}
protected ModClusterListener(ModClusterServiceMBean mbean, LifecycleListener listener) {
@@ -111,22 +119,28 @@
*/
@Override
public LoadBalanceFactorProvider createLoadBalanceFactorProvider() {
- try {
- LoadMetric metric = this.loadMetricClass.newInstance();
+ PrivilegedAction<LoadMetric> action = new PrivilegedAction<LoadMetric>() {
+ @Override
+ public LoadMetric run() {
+ try {
+ return ModClusterListener.this.loadMetricClass.newInstance();
+ } catch (IllegalAccessException e) {
+ throw new IllegalArgumentException(e);
+ } catch (InstantiationException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+ };
+ LoadMetric metric = AccessController.doPrivileged(action);
- metric.setCapacity(this.capacity);
+ metric.setCapacity(this.capacity);
- DynamicLoadBalanceFactorProvider provider = new DynamicLoadBalanceFactorProvider(Collections.singleton(metric));
+ DynamicLoadBalanceFactorProvider provider = new DynamicLoadBalanceFactorProvider(Collections.singleton(metric));
- provider.setDecayFactor(this.decayFactor);
- provider.setHistory(this.history);
+ provider.setDecayFactor(this.decayFactor);
+ provider.setHistory(this.history);
- return provider;
- } catch (IllegalAccessException e) {
- throw new IllegalArgumentException(e);
- } catch (InstantiationException e) {
- throw new IllegalArgumentException(e);
- }
+ return provider;
}
/**
@@ -174,9 +188,20 @@
return this.getJvmRouteFactory().getClass();
}
- public void setJvmRouteFactoryClass(Class<? extends JvmRouteFactory> factoryClass) throws InstantiationException,
- IllegalAccessException {
- this.setJvmRouteFactory(factoryClass.newInstance());
+ public void setJvmRouteFactoryClass(final Class<? extends JvmRouteFactory> factoryClass) {
+ PrivilegedAction<JvmRouteFactory> action = new PrivilegedAction<JvmRouteFactory>() {
+ @Override
+ public JvmRouteFactory run() {
+ try {
+ return factoryClass.newInstance();
+ } catch (IllegalAccessException e) {
+ throw new IllegalArgumentException(e);
+ } catch (InstantiationException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+ };
+ this.setJvmRouteFactory(AccessController.doPrivileged(action));
}
/**
@@ -194,8 +219,18 @@
* @param loadMetricClass a class implementing {@link LoadMetric}
* @throws ClassNotFoundException
*/
- public void setLoadMetricClass(String loadMetricClass) throws ClassNotFoundException {
- this.loadMetricClass = Class.forName(loadMetricClass).asSubclass(LoadMetric.class);
+ public void setLoadMetricClass(final String loadMetricClass) {
+ PrivilegedAction<Class<? extends LoadMetric>> action = new PrivilegedAction<Class<? extends LoadMetric>>() {
+ @Override
+ public Class<? extends LoadMetric> run() {
+ try {
+ return ModClusterListener.class.getClassLoader().loadClass(loadMetricClass).asSubclass(LoadMetric.class);
+ } catch (ClassNotFoundException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+ };
+ this.loadMetricClass = AccessController.doPrivileged(action);
}
/**
More information about the mod_cluster-commits
mailing list