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);