You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by st...@apache.org on 2015/05/17 13:20:57 UTC

[11/37] tomee git commit: destroying sessions in application composer as well

destroying sessions in application composer as well


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

Branch: refs/heads/master
Commit: 7840b09f4957b494ef76d8be8842d631d1ba6acc
Parents: 95ea7d5
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Sun May 3 22:23:57 2015 +0200
Committer: Mark Struberg <st...@apache.org>
Committed: Mon May 4 19:32:05 2015 +0200

----------------------------------------------------------------------
 .../openejb/OpenEJBDeployableContainer.java     |  6 ++++--
 .../openejb/testing/ApplicationComposers.java   | 22 ++++++++++++++++++++
 2 files changed, 26 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/7840b09f/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java b/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
index 44915b8..f999c20 100644
--- a/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
+++ b/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
@@ -319,8 +319,10 @@ public class OpenEJBDeployableContainer implements DeployableContainer<OpenEJBCo
                         public void close() throws IOException {
                             try {
                                 final SessionManager sessionManager = SystemInstance.get().getComponent(SessionManager.class);
-                                for (final WebContext web : appCtx.getWebContexts()) {
-                                    sessionManager.destroy(web);
+                                if (sessionManager != null) {
+                                    for (final WebContext web : appCtx.getWebContexts()) {
+                                        sessionManager.destroy(web);
+                                    }
                                 }
                             } catch (final Throwable e) {
                                 // no-op

http://git-wip-us.apache.org/repos/asf/tomee/blob/7840b09f/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java b/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java
index 49d4468..e94bed3 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java
@@ -46,6 +46,7 @@ import org.apache.openejb.config.sys.JaxbOpenejb;
 import org.apache.openejb.config.sys.Openejb;
 import org.apache.openejb.core.LocalInitialContextFactory;
 import org.apache.openejb.core.Operation;
+import org.apache.openejb.core.ParentClassLoaderFinder;
 import org.apache.openejb.core.ThreadContext;
 import org.apache.openejb.core.WebContext;
 import org.apache.openejb.core.ivm.naming.InitContextFactory;
@@ -75,6 +76,7 @@ import org.apache.openejb.util.NetworkUtil;
 import org.apache.openejb.util.PropertyPlaceHolderHelper;
 import org.apache.openejb.util.ServiceManagerProxy;
 import org.apache.openejb.util.URLs;
+import org.apache.openejb.util.reflection.Reflections;
 import org.apache.openejb.web.LightweightWebAppBuilder;
 import org.apache.webbeans.inject.OWBInjector;
 import org.apache.webbeans.spi.ContextsService;
@@ -1447,6 +1449,26 @@ public class ApplicationComposers {
                     }
                 }
             });
+            if (!composer.appContext.getWebContexts().isEmpty()) {
+                composer.beforeDestroyAfterRunnables.add(new Runnable() {
+                    @Override
+                    public void run() {
+                        try {
+                            final Object sessionManager = SystemInstance.get().getComponent(
+                                    ParentClassLoaderFinder.Helper.get().loadClass("org.apache.openejb.server.httpd.session.SessionManager")
+                            );
+                            if (sessionManager != null) {
+                                final Class<?>[] paramTypes = {WebContext.class};
+                                for (final WebContext web : composer.appContext.getWebContexts()) {
+                                    Reflections.invokeByReflection(sessionManager, "destroy", paramTypes, new Object[] { web });
+                                }
+                            }
+                        } catch (final Throwable e) {
+                            // no-op
+                        }
+                    }
+                });
+            }
             composer.afterRunnables.add(new Runnable() {
                 @Override
                 public void run() {