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

Reply via email to