[jboss-cvs] JBossAS SVN: r107425 - branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/sso.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Aug 4 22:42:00 EDT 2010
Author: pferraro
Date: 2010-08-04 22:42:00 -0400 (Wed, 04 Aug 2010)
New Revision: 107425
Modified:
branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/sso/ClusteredSingleSignOn.java
Log:
Remove clusterManagerClass default value. Configure via service loader if no clusterManagerClass was specified.
Modified: branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/sso/ClusteredSingleSignOn.java
===================================================================
--- branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/sso/ClusteredSingleSignOn.java 2010-08-05 02:39:37 UTC (rev 107424)
+++ branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/sso/ClusteredSingleSignOn.java 2010-08-05 02:42:00 UTC (rev 107425)
@@ -22,6 +22,7 @@
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
+import java.util.ServiceLoader;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -82,7 +83,6 @@
/** The default JBoss Cache to use for storing SSO entries */
public static final String DEFAULT_CACHE_NAME = "clustered-sso";
public static final String LEGACY_CACHE_NAME = "jboss.cache:service=TomcatClusteringCache";
- public static final String DEFAULT_CLUSTER_MANAGER_CLASS = "org.jboss.web.tomcat.service.sso.jbc.JBossCacheSSOClusterManager";
// Override the superclass value
static
@@ -98,7 +98,7 @@
* {@link SSOClusterManager SSOClusterManager} that will be used
* to manage SSOs across a cluster.
*/
- private String clusterManagerClass = DEFAULT_CLUSTER_MANAGER_CLASS;
+ private String clusterManagerClass;
/**
* Object used to provide cross-cluster support for single sign on.
@@ -138,7 +138,7 @@
* Map<String, Long> containing the ids of SSOs with no active sessions
* and the time at which they entered that state
*/
- private Map emptySSOs = new ConcurrentHashMap();
+ private Map<String, Long> emptySSOs = new ConcurrentHashMap<String, Long>();
/** Used for sync locking of processExpires runs */
private final Object mutex = new Object();
@@ -415,7 +415,7 @@
}
// Attempt to create an SSOClusterManager
- createClusterManager(getClusterManagerClass());
+ createClusterManager(this.clusterManagerClass);
lifecycle.fireLifecycleEvent(START_EVENT, null);
started = true;
@@ -1270,7 +1270,7 @@
{
ClassLoader tcl =
Thread.currentThread().getContextClassLoader();
- Class clazz = tcl.loadClass(className);
+ Class<?> clazz = tcl.loadClass(className);
mgr = (SSOClusterManager) clazz.newInstance();
mgr.setSSOLocalManager(this);
ssoClusterManager = mgr;
@@ -1282,23 +1282,35 @@
"SSOClusterManager using " +
className, t);
}
+ }
+ else
+ {
+ Iterator<SSOClusterManager> managers = ServiceLoader.load(SSOClusterManager.class).iterator();
+
+ if (!managers.hasNext())
+ {
+ throw new LifecycleException("No service provider found: " + SSOClusterManager.class.getName());
+ }
- if (started)
+ this.ssoClusterManager = managers.next();
+ this.clusterManagerClass = this.ssoClusterManager.getClass().getName();
+ }
+
+ if (started)
+ {
+ try
{
- try
- {
- ssoClusterManager.start();
- }
- catch (LifecycleException e)
- {
- throw e;
- }
- catch (Exception e)
- {
- throw new LifecycleException("Caught exception stopping " +
- ssoClusterManager.getClass().getSimpleName(), e);
- }
+ ssoClusterManager.start();
}
+ catch (LifecycleException e)
+ {
+ throw e;
+ }
+ catch (Exception e)
+ {
+ throw new LifecycleException("Caught exception stopping " +
+ ssoClusterManager.getClass().getSimpleName(), e);
+ }
}
}
More information about the jboss-cvs-commits
mailing list