From: Mathieu Baudier Date: Sat, 7 Nov 2015 12:30:49 +0000 (+0000) Subject: Log out kernel after authorisation in order not to propagate access context X-Git-Tag: argeo-commons-2.1.30~32 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=7bc9403c96bbae11358978358cc902e3f2c6e508;p=lgpl%2Fargeo-commons.git Log out kernel after authorisation in order not to propagate access context git-svn-id: https://svn.argeo.org/commons/trunk@8558 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java index 1f562b817..71b1a5bdd 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java @@ -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; }