Repository: tomee Updated Branches: refs/heads/master 3de86d019 -> 3a6d014ec
trying to make ejbd more stable on the CI Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/3a6d014e Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/3a6d014e Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/3a6d014e Branch: refs/heads/master Commit: 3a6d014ec15f3ef0e0047a03ee98a80913f10a6f Parents: 3de86d0 Author: rmannibucau <rmannibu...@apache.org> Authored: Wed Sep 21 18:31:00 2016 +0200 Committer: rmannibucau <rmannibu...@apache.org> Committed: Wed Sep 21 18:31:00 2016 +0200 ---------------------------------------------------------------------- .../apache/openejb/core/security/AbstractSecurityService.java | 6 ++++-- .../main/java/org/apache/openejb/server/ejbd/EjbDaemon.java | 7 +++++++ .../org/apache/openejb/server/ejbd/EjbRequestHandler.java | 5 +++-- 3 files changed, 14 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/3a6d014e/container/openejb-core/src/main/java/org/apache/openejb/core/security/AbstractSecurityService.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/security/AbstractSecurityService.java b/container/openejb-core/src/main/java/org/apache/openejb/core/security/AbstractSecurityService.java index 1378f98..53634f9 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/core/security/AbstractSecurityService.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/core/security/AbstractSecurityService.java @@ -221,8 +221,10 @@ public abstract class AbstractSecurityService implements DestroyableResource, Se @Override public void associate(final UUID securityIdentity) throws LoginException { - if (clientIdentity.get() != null) { - throw new LoginException("Thread already associated with a client identity. Refusing to overwrite."); + final Identity existing = clientIdentity.get(); + if (existing != null) { + throw new LoginException("Thread already associated with a client identity. Refusing to overwrite. " + + "(current=" + existing.getToken() + ", refused=" + securityIdentity + ")"); } if (securityIdentity == null) { throw new NullPointerException("The security token passed in is null"); http://git-wip-us.apache.org/repos/asf/tomee/blob/3a6d014e/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java ---------------------------------------------------------------------- diff --git a/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java b/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java index c0a8e68..c26cd3f 100644 --- a/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java +++ b/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbDaemon.java @@ -34,6 +34,7 @@ import org.apache.openejb.server.context.RequestInfos; import org.apache.openejb.server.stream.CountingInputStream; import org.apache.openejb.server.stream.CountingOutputStream; import org.apache.openejb.spi.ContainerSystem; +import org.apache.openejb.spi.SecurityService; import org.apache.openejb.util.Exceptions; import org.apache.openejb.util.LogCategory; import org.apache.openejb.util.Logger; @@ -70,6 +71,7 @@ public class EjbDaemon implements org.apache.openejb.spi.ApplicationServer { //Four hours private int timeout = 14400000; private boolean countStreams; + private SecurityService securityService; public void init(final Properties props) throws Exception { containerSystem = SystemInstance.get().getComponent(ContainerSystem.class); @@ -105,6 +107,8 @@ public class EjbDaemon implements org.apache.openejb.spi.ApplicationServer { } countStreams = Boolean.parseBoolean(props.getProperty("stream.count", Boolean.toString(jndiHandler.isDebug()))); + + securityService = SystemInstance.get().getComponent(SecurityService.class); } public void service(final Socket socket) throws IOException { @@ -336,6 +340,9 @@ public class EjbDaemon implements org.apache.openejb.spi.ApplicationServer { //Ignore } } + + // enforced in case of exception + securityService.disassociate(); } } } http://git-wip-us.apache.org/repos/asf/tomee/blob/3a6d014e/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java ---------------------------------------------------------------------- diff --git a/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java b/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java index 521f321..b7b7c3a 100644 --- a/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java +++ b/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbRequestHandler.java @@ -104,9 +104,10 @@ class EjbRequestHandler extends RequestHandler { boolean failed = false; final CallContext call; + Object clientIdentity = null; try { try { - final Object clientIdentity = req.getClientIdentity(); + clientIdentity = req.getClientIdentity(); if (clientIdentity != null) {//noinspection unchecked securityService.associate(clientIdentity); } @@ -156,7 +157,7 @@ class EjbRequestHandler extends RequestHandler { } } finally { - if (failed) { + if (clientIdentity != null && failed) { securityService.disassociate(); } }