You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2011/01/21 02:54:51 UTC
svn commit: r1061595 - in
/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat:
GeronimoStandardContext.java TomcatContext.java
Author: xuhaihong
Date: Fri Jan 21 01:54:51 2011
New Revision: 1061595
URL: http://svn.apache.org/viewvc?rev=1061595&view=rev
Log:
Use ThreadLocal to keep the context info, and initialization work
Modified:
geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java
geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/TomcatContext.java
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java?rev=1061595&r1=1061594&r2=1061595&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java Fri Jan 21 01:54:51 2011
@@ -30,6 +30,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.Stack;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
@@ -112,7 +113,7 @@ public class GeronimoStandardContext ext
private Subject defaultSubject = null;
private RunAsSource runAsSource = RunAsSource.NULL;
- private Map webServiceMap = null;
+ private Map<String, WebServiceContainer> webServiceMap = null;
private boolean pipelineInitialized;
@@ -128,6 +129,15 @@ public class GeronimoStandardContext ext
private Bundle bundle;
private ServiceRegistration serviceRegistration;
+ private ThreadLocal<Stack<Object[]>> beforeAfterContexts = new ThreadLocal<Stack<Object[]>>() {
+
+ @Override
+ protected Stack<Object[]> initialValue() {
+ return new Stack<Object[]>();
+ }
+
+ };
+
public GeronimoStandardContext() {
setXmlNamespaceAware(true);
// disable Tomcat startup TLD scanning
@@ -285,18 +295,18 @@ public class GeronimoStandardContext ext
addValve(new SystemMethodValve());
// Add User Defined Valves
- List valveChain = ctx.getValveChain();
+ List<Valve> valveChain = ctx.getValveChain();
if (valveChain != null) {
- for (Object valve : valveChain) {
- addValve((Valve)valve);
+ for (Valve valve : valveChain) {
+ addValve(valve);
}
}
// Add User Defined Listeners
- List listenerChain = ctx.getLifecycleListenerChain();
+ List<LifecycleListener> listenerChain = ctx.getLifecycleListenerChain();
if (listenerChain != null) {
- for (Object listener : listenerChain) {
- addLifecycleListener((LifecycleListener)listener);
+ for (LifecycleListener listener : listenerChain) {
+ addLifecycleListener(listener);
}
}
@@ -452,7 +462,7 @@ public class GeronimoStandardContext ext
Valve valve = getPipeline().getFirst();
valve.invoke(null, null);
- // if a servlet uses run-as then make sure role desgnates have been provided
+ // if a servlet uses run-as then make sure role designates have been provided
if (hasRunAsServlet()) {
if (runAsSource == null) {
throw new GeronimoSecurityException("web.xml or annotation specifies a run-as role but no subject configuration supplied for run-as roles");
@@ -513,8 +523,8 @@ public class GeronimoStandardContext ext
ClassLoader cl = this.getParentClassLoader();
- Class baseServletClass;
- Class servletClass;
+ Class<?> baseServletClass;
+ Class<?> servletClass;
try {
baseServletClass = cl.loadClass(Servlet.class.getName());
servletClass = cl.loadClass(servletClassName);
@@ -522,7 +532,7 @@ public class GeronimoStandardContext ext
if (!baseServletClass.isAssignableFrom(servletClass)) {
//Nope - its probably a webservice, so lets see...
if (webServiceMap != null) {
- WebServiceContainer webServiceContainer = (WebServiceContainer) webServiceMap.get(wrapper.getName());
+ WebServiceContainer webServiceContainer = webServiceMap.get(wrapper.getName());
if (webServiceContainer != null) {
//Yep its a web service
@@ -816,4 +826,25 @@ public class GeronimoStandardContext ext
super.addSecurityRole(role);
webSecurityConstraintStore.declareRoles(role);
}
+
+ @Override
+ protected ClassLoader bindThread() {
+ ClassLoader oldClassLoader = super.bindThread();
+ Object context[] = null;
+
+ if (beforeAfter != null){
+ context = new Object[contextCount];
+ beforeAfterContexts.get().push(context);
+ beforeAfter.before(context, null, null, BeforeAfter.EDGE_SERVLET);
+ }
+ return oldClassLoader;
+ }
+
+ @Override
+ protected void unbindThread(ClassLoader oldContextClassLoader) {
+ super.unbindThread(oldContextClassLoader);
+ if (beforeAfter != null){
+ beforeAfter.after(beforeAfterContexts.get().pop(), null, null, 0);
+ }
+ }
}
Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/TomcatContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/TomcatContext.java?rev=1061595&r1=1061594&r2=1061595&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/TomcatContext.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/TomcatContext.java Fri Jan 21 01:54:51 2011
@@ -24,6 +24,7 @@ import java.util.Set;
import javax.transaction.UserTransaction;
import org.apache.catalina.Context;
+import org.apache.catalina.LifecycleListener;
import org.apache.catalina.Manager;
import org.apache.catalina.Realm;
import org.apache.catalina.Valve;
@@ -32,6 +33,7 @@ import org.apache.geronimo.connector.out
import org.apache.geronimo.kernel.Kernel;
import org.apache.geronimo.tomcat.util.SecurityHolder;
import org.apache.geronimo.web.info.WebAppInfo;
+import org.apache.geronimo.webservices.WebServiceContainer;
import org.apache.tomcat.InstanceManager;
import org.apache.webbeans.config.WebBeansContext;
import org.osgi.framework.Bundle;
@@ -60,19 +62,19 @@ public interface TomcatContext {
Kernel getKernel();
- Set getApplicationManagedSecurityResources();
+ Set<String> getApplicationManagedSecurityResources();
TrackedConnectionAssociator getTrackedConnectionAssociator();
- Set getUnshareableResources();
+ Set<String> getUnshareableResources();
Realm getRealm();
Valve getClusteredValve();
- List getValveChain();
+ List<Valve> getValveChain();
- List getLifecycleListenerChain();
+ List<LifecycleListener> getLifecycleListenerChain();
CatalinaCluster getCluster();
@@ -84,7 +86,7 @@ public interface TomcatContext {
boolean isDisableCookies();
- Map getWebServices();
+ Map<String, WebServiceContainer> getWebServices();
InstanceManager getInstanceManager();