Log out kernel after authorisation in order not to propagate access context svn/trunk
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 7 Nov 2015 12:30:49 +0000 (12:30 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 7 Nov 2015 12:30:49 +0000 (12:30 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@8558 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java

index 1f562b817cfeff0f1bcafeb3bfb222d96c537750..71b1a5bdd941e5f2489ac9055403eb9c2a4e166d 100644 (file)
@@ -29,6 +29,8 @@ import javax.jcr.RepositoryFactory;
 import javax.jcr.Session;
 import javax.jcr.SimpleCredentials;
 import javax.security.auth.Subject;
+import javax.security.auth.login.LoginContext;
+import javax.security.auth.login.LoginException;
 import javax.transaction.TransactionManager;
 import javax.transaction.TransactionSynchronizationRegistry;
 import javax.transaction.UserTransaction;
@@ -160,6 +162,13 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener {
                        throw new ArgeoException("Cannot initialize", e);
                } finally {
                        Thread.currentThread().setContextClassLoader(currentContextCl);
+                       // FIXME better manage lifecycle.
+                       try {
+                               new LoginContext(LOGIN_CONTEXT_KERNEL,
+                                               nodeSecurity.getKernelSubject()).logout();
+                       } catch (LoginException e) {
+                               e.printStackTrace();
+                       }
                }
 
                long jvmUptime = ManagementFactory.getRuntimeMXBean().getUptime();
@@ -553,7 +562,7 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener {
                rootThreadGroup.enumerate(threads);
                int nonDameonCount = 0;
                for (Thread t : threads)
-                       if (!t.isDaemon())
+                       if (t!=null && !t.isDaemon())
                                nonDameonCount++;
                return nonDameonCount;
        }