You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2016/04/07 10:57:21 UTC

tomee git commit: TOMEE-1770 OWB boot should use webapp loader as well

Repository: tomee
Updated Branches:
  refs/heads/master 1cbe8e350 -> 12711a1b3


TOMEE-1770 OWB boot should use webapp loader as well


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/12711a1b
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/12711a1b
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/12711a1b

Branch: refs/heads/master
Commit: 12711a1b353d487f2196bf3d5666ea0c3c493610
Parents: 1cbe8e3
Author: Romain manni-Bucau <rm...@gmail.com>
Authored: Thu Apr 7 10:56:44 2016 +0200
Committer: Romain manni-Bucau <rm...@gmail.com>
Committed: Thu Apr 7 10:56:44 2016 +0200

----------------------------------------------------------------------
 .../tomee/catalina/TomcatWebAppBuilder.java     | 103 ++++++++++---------
 1 file changed, 54 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/12711a1b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
index f9c5d58..41a8a7b 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
@@ -1709,67 +1709,72 @@ public class TomcatWebAppBuilder implements WebAppBuilder, ContextListener, Pare
             ContextAccessController.setReadOnly(listenerName);
         }
 
-        // owb integration filters
-        final WebBeansContext webBeansContext = getWebBeansContext(contextInfo);
-        if (webBeansContext != null) {
-            // it is important to have a begin and a end listener
-            // to be sure to create contexts before other listeners
-            // and destroy contexts after other listeners
+        thread.setContextClassLoader(classLoader);
+        try {
+            // owb integration filters
+            final WebBeansContext webBeansContext = getWebBeansContext(contextInfo);
+            if (webBeansContext != null) {
+                // it is important to have a begin and a end listener
+                // to be sure to create contexts before other listeners
+                // and destroy contexts after other listeners
 
-            final BeginWebBeansListener beginWebBeansListener = new BeginWebBeansListener(webBeansContext);
-            final EndWebBeansListener endWebBeansListener = new EndWebBeansListener(webBeansContext);
+                final BeginWebBeansListener beginWebBeansListener = new BeginWebBeansListener(webBeansContext);
+                final EndWebBeansListener endWebBeansListener = new EndWebBeansListener(webBeansContext);
 
-            {
-                final Object[] appEventListeners = standardContext.getApplicationEventListeners();
-                final Object[] newEventListeners = new Object[appEventListeners.length + 2];
+                {
+                    final Object[] appEventListeners = standardContext.getApplicationEventListeners();
+                    final Object[] newEventListeners = new Object[appEventListeners.length + 2];
 
-                newEventListeners[0] = beginWebBeansListener;
-                System.arraycopy(appEventListeners, 0, newEventListeners, 1, appEventListeners.length);
-                newEventListeners[newEventListeners.length - 1] = endWebBeansListener;
-                standardContext.setApplicationEventListeners(newEventListeners);
-            }
+                    newEventListeners[0] = beginWebBeansListener;
+                    System.arraycopy(appEventListeners, 0, newEventListeners, 1, appEventListeners.length);
+                    newEventListeners[newEventListeners.length - 1] = endWebBeansListener;
+                    standardContext.setApplicationEventListeners(newEventListeners);
+                }
 
-            {
-                final Object[] lifecycleListeners = standardContext.getApplicationLifecycleListeners();
-                final Object[] newLifecycleListeners = new Object[lifecycleListeners.length + 2];
+                {
+                    final Object[] lifecycleListeners = standardContext.getApplicationLifecycleListeners();
+                    final Object[] newLifecycleListeners = new Object[lifecycleListeners.length + 2];
 
-                newLifecycleListeners[0] = beginWebBeansListener;
-                System.arraycopy(lifecycleListeners, 0, newLifecycleListeners, 1, lifecycleListeners.length);
-                newLifecycleListeners[newLifecycleListeners.length - 1] = endWebBeansListener;
-                standardContext.setApplicationLifecycleListeners(newLifecycleListeners);
-            }
+                    newLifecycleListeners[0] = beginWebBeansListener;
+                    System.arraycopy(lifecycleListeners, 0, newLifecycleListeners, 1, lifecycleListeners.length);
+                    newLifecycleListeners[newLifecycleListeners.length - 1] = endWebBeansListener;
+                    standardContext.setApplicationLifecycleListeners(newLifecycleListeners);
+                }
 
-            // also add the ThreadBindingListener to clean up async thread executions
-            {
-                WebBeansThreadBindingListener webBeansThreadBindingListener = new WebBeansThreadBindingListener(webBeansContext, standardContext.getThreadBindingListener());
-                standardContext.setThreadBindingListener(webBeansThreadBindingListener);
-            }
+                // also add the ThreadBindingListener to clean up async thread executions
+                {
+                    WebBeansThreadBindingListener webBeansThreadBindingListener = new WebBeansThreadBindingListener(webBeansContext, standardContext.getThreadBindingListener());
+                    standardContext.setThreadBindingListener(webBeansThreadBindingListener);
+                }
 
-            final ContextsService contextsService = webBeansContext.getContextsService();
-            if (CdiAppContextsService.class.isInstance(contextsService)) { // here ServletContext is usable
-                CdiAppContextsService.class.cast(contextsService).applicationStarted(standardContext.getServletContext());
-            }
-        } else {
-            // just add the end listener to be able to stack tasks to execute at the request end
-            final EndWebBeansListener endWebBeansListener = new EndWebBeansListener(webBeansContext);
+                final ContextsService contextsService = webBeansContext.getContextsService();
+                if (CdiAppContextsService.class.isInstance(contextsService)) { // here ServletContext is usable
+                    CdiAppContextsService.class.cast(contextsService).applicationStarted(standardContext.getServletContext());
+                }
+            } else {
+                // just add the end listener to be able to stack tasks to execute at the request end
+                final EndWebBeansListener endWebBeansListener = new EndWebBeansListener(webBeansContext);
 
-            {
-                final Object[] appEventListeners = standardContext.getApplicationEventListeners();
-                final Object[] newEventListeners = new Object[appEventListeners.length + 1];
+                {
+                    final Object[] appEventListeners = standardContext.getApplicationEventListeners();
+                    final Object[] newEventListeners = new Object[appEventListeners.length + 1];
 
-                System.arraycopy(appEventListeners, 0, newEventListeners, 1, appEventListeners.length);
-                newEventListeners[newEventListeners.length - 1] = endWebBeansListener;
-                standardContext.setApplicationEventListeners(newEventListeners);
-            }
+                    System.arraycopy(appEventListeners, 0, newEventListeners, 1, appEventListeners.length);
+                    newEventListeners[newEventListeners.length - 1] = endWebBeansListener;
+                    standardContext.setApplicationEventListeners(newEventListeners);
+                }
 
-            {
-                final Object[] lifecycleListeners = standardContext.getApplicationLifecycleListeners();
-                final Object[] newLifecycleListeners = new Object[lifecycleListeners.length + 1];
+                {
+                    final Object[] lifecycleListeners = standardContext.getApplicationLifecycleListeners();
+                    final Object[] newLifecycleListeners = new Object[lifecycleListeners.length + 1];
 
-                System.arraycopy(lifecycleListeners, 0, newLifecycleListeners, 1, lifecycleListeners.length);
-                newLifecycleListeners[newLifecycleListeners.length - 1] = endWebBeansListener;
-                standardContext.setApplicationLifecycleListeners(newLifecycleListeners);
+                    System.arraycopy(lifecycleListeners, 0, newLifecycleListeners, 1, lifecycleListeners.length);
+                    newLifecycleListeners[newLifecycleListeners.length - 1] = endWebBeansListener;
+                    standardContext.setApplicationLifecycleListeners(newLifecycleListeners);
+                }
             }
+        } finally {
+            thread.setContextClassLoader(originalLoader);
         }
 
         LinkageErrorProtection.preload(standardContext);