[jboss-cvs] JBossAS SVN: r96608 - in trunk/tomcat/src/main/java/org/jboss/web/tomcat/service: session and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Nov 19 21:12:10 EST 2009
Author: bstansberry at jboss.com
Date: 2009-11-19 21:12:10 -0500 (Thu, 19 Nov 2009)
New Revision: 96608
Modified:
trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java
trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployment.java
trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/session/JBossManager.java
Log:
[JBAS-7473] Configure clustered session manager in JBossContextConfig
Modified: trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java
===================================================================
--- trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java 2009-11-20 00:12:12 UTC (rev 96607)
+++ trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java 2009-11-20 02:12:10 UTC (rev 96608)
@@ -47,8 +47,10 @@
import javax.xml.namespace.QName;
import org.apache.catalina.Container;
+import org.apache.catalina.Host;
import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleEvent;
+import org.apache.catalina.Manager;
import org.apache.catalina.Wrapper;
import org.apache.catalina.core.ContextJarRepository;
import org.apache.catalina.core.StandardContext;
@@ -61,6 +63,7 @@
import org.apache.catalina.deploy.jsp.TagLibraryInfo;
import org.apache.catalina.deploy.jsp.TagLibraryValidatorInfo;
import org.apache.catalina.deploy.jsp.TagVariableInfo;
+import org.apache.catalina.session.StandardManager;
import org.apache.catalina.startup.ContextConfig;
import org.apache.naming.resources.ProxyDirContext;
import org.apache.tomcat.util.IntrospectionUtils;
@@ -119,7 +122,11 @@
import org.jboss.web.deployers.MergedJBossWebMetaDataDeployer;
import org.jboss.web.deployers.ServletContainerInitializerDeployer;
import org.jboss.web.tomcat.metadata.ContextMetaData;
+import org.jboss.web.tomcat.metadata.ManagerMetaData;
import org.jboss.web.tomcat.metadata.ParameterMetaData;
+import org.jboss.web.tomcat.service.session.AbstractJBossManager;
+import org.jboss.web.tomcat.service.session.JBossCacheManager;
+import org.jboss.web.tomcat.service.session.distributedcache.spi.ClusteringNotSupportedException;
import org.jboss.xb.binding.Unmarshaller;
import org.jboss.xb.binding.UnmarshallerFactory;
import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
@@ -786,8 +793,8 @@
// Context/Manager
if (contextMetaData.getManager() != null)
{
- org.apache.catalina.Manager manager = (org.apache.catalina.Manager)TomcatService.getInstance
- (contextMetaData.getManager(), "org.apache.catalina.session.StandardManager");
+ Manager manager = initManager(contextMetaData.getManager());
+
if (contextMetaData.getManager().getStore() != null)
{
org.apache.catalina.Store store = (org.apache.catalina.Store)TomcatService.getInstance
@@ -1205,6 +1212,68 @@
}
}
}
+
+ protected Manager initManager(ManagerMetaData managerMetaData) throws Exception,
+ ClusteringNotSupportedException, NoClassDefFoundError
+ {
+ JBossWebMetaData webMetaData = metaDataLocal.get();
+
+ String defaultManagerClass = webMetaData.getDistributable() == null
+ ? StandardManager.class.getName() : JBossCacheManager.class.getName();
+ Manager manager = (Manager)TomcatService.getInstance(managerMetaData, defaultManagerClass);
+
+ if (manager instanceof AbstractJBossManager)
+ {
+ // TODO next 10+ lines just to create a 'name' that the AbstractJBossManager
+ // impls don't even use
+ Host host = null;
+ Container container = context;
+ while (host == null && container != null)
+ {
+ container = container.getParent();
+ if (container instanceof Host)
+ {
+ host = (Host) container;
+ }
+ }
+ String hostName = host.getName();
+ String name = "//" + ((hostName == null) ? "localhost" : hostName) + webMetaData.getContextRoot();
+
+ try
+ {
+ ((AbstractJBossManager) manager).init(name, webMetaData);
+ }
+ catch (ClusteringNotSupportedException e)
+ {
+ if (managerMetaData.getClassName() == null)
+ {
+ // JBAS-3513 Just log a WARN, not an ERROR
+ log.warn("Failed to setup clustering, clustering disabled. ClusteringNotSupportedException: " + e.getMessage());
+ manager = (Manager)TomcatService.getInstance(managerMetaData, StandardManager.class.getName());
+ }
+ else
+ {
+ throw e;
+ }
+ }
+ catch (NoClassDefFoundError ncdf)
+ {
+ if (managerMetaData.getClassName() == null)
+ {
+ // JBAS-3513 Just log a WARN, not an ERROR
+ log.debug("Classes needed for clustered webapp unavailable", ncdf);
+ log.warn("Failed to setup clustering, clustering disabled. NoClassDefFoundError: " + ncdf.getMessage());
+ manager = (Manager)TomcatService.getInstance(managerMetaData, StandardManager.class.getName());
+ }
+ else
+ {
+ throw ncdf;
+ }
+
+ }
+ }
+ return manager;
+ }
protected void completeConfig() {
Modified: trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployment.java
===================================================================
--- trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployment.java 2009-11-20 00:12:12 UTC (rev 96607)
+++ trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployment.java 2009-11-20 02:12:10 UTC (rev 96608)
@@ -35,7 +35,6 @@
import java.util.Map;
import java.util.Set;
-import javax.management.Attribute;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.naming.Context;
@@ -70,8 +69,6 @@
import org.jboss.web.tomcat.service.TomcatInjectionContainer;
import org.jboss.web.tomcat.service.WebCtxLoader;
import org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve;
-import org.jboss.web.tomcat.service.session.AbstractJBossManager;
-import org.jboss.web.tomcat.service.session.distributedcache.spi.ClusteringNotSupportedException;
import org.omg.CORBA.ORB;
/**
@@ -329,42 +326,6 @@
throw new DeploymentException("URL " + warUrlStr + " deployment failed");
}
- // Clustering
- if (config.getOverrideDistributableManager() && metaData.getDistributable() != null)
- {
- // Try to initate clustering, fallback to standard if no clustering is
- // available
- try
- {
- AbstractJBossManager manager = null;
- String managerClassName = config.getManagerClass();
- Class managerClass = Thread.currentThread().getContextClassLoader().loadClass(managerClassName);
- manager = (AbstractJBossManager)managerClass.newInstance();
- String name = "//" + ((hostName == null) ? "localhost" : hostName) + ctxPath;
- manager.init(name, metaData);
-
- server.setAttribute(objectName, new Attribute("manager", manager));
-
- log.debug("Enabled clustering support for ctxPath=" + ctxPath);
- }
- catch (ClusteringNotSupportedException e)
- {
- // JBAS-3513 Just log a WARN, not an ERROR
- log.warn("Failed to setup clustering, clustering disabled. ClusteringNotSupportedException: " + e.getMessage());
- }
- catch (NoClassDefFoundError ncdf)
- {
- // JBAS-3513 Just log a WARN, not an ERROR
- log.debug("Classes needed for clustered webapp unavailable", ncdf);
- log.warn("Failed to setup clustering, clustering disabled. NoClassDefFoundError: " + ncdf.getMessage());
- }
- catch (Throwable t)
- {
- // TODO consider letting this through and fail the deployment
- log.error("Failed to setup clustering, clustering disabled. Exception: ", t);
- }
- }
-
/*
* Add security association valve after the authorization valves so that the authenticated user may be associated
* with the request thread/session.
@@ -504,6 +465,7 @@
* else scoped class loading does not see the war level overrides. The call to setWarURL adds these paths to the
* deployment UCL.
*/
+ @SuppressWarnings("unchecked")
List<URL> classpath = unit.getAttachment("org.jboss.web.expandedWarClasspath", List.class);
if (classpath == null && unit instanceof VFSDeploymentUnit)
{
Modified: trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/session/JBossManager.java
===================================================================
--- trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/session/JBossManager.java 2009-11-20 00:12:12 UTC (rev 96607)
+++ trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/session/JBossManager.java 2009-11-20 02:12:10 UTC (rev 96608)
@@ -963,6 +963,44 @@
return objectName_;
}
+ // ------------------------------------------ Tomcat StandardManager Setters
+
+ // Following are setters exposed by Tomcat's StandardManager. We also
+ // expose them so if someone uses them in the default conf/context.xml
+ // we won't blow up during initialization
+
+ public void setPathname(String pathname)
+ {
+ if (pathname != null && pathname.length() > 0)
+ {
+ log_.debug(getClass().getSimpleName() + " is ignoring the pathname attribute");
+ }
+ }
+
+ public void setAlgorithm(String algorithm)
+ {
+ if (algorithm != null && algorithm.length() > 0)
+ {
+ log_.debug(getClass().getSimpleName() + " is ignoring the algorithm algorithm");
+ }
+ }
+
+ public void setEntropy(String entropy)
+ {
+ if (entropy != null && entropy.length() > 0)
+ {
+ log_.debug(getClass().getSimpleName() + " is ignoring the entropy algorithm");
+ }
+ }
+
+ public void setRandomClass(String randomClass)
+ {
+ if (randomClass != null && randomClass.length() > 0)
+ {
+ log_.debug(getClass().getSimpleName() + " is ignoring the randomClass algorithm");
+ }
+ }
+
// ------------------------------------------------------------------ Protected
/**
More information about the jboss-cvs-commits
mailing list