[release-tools] creating tag for openejb-4.5.0

git-svn-id: https://svn.apache.org/repos/asf/openejb/tags/openejb-4.5.0@1391627 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
index 30811cf..dc61632 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
@@ -1129,12 +1129,6 @@
             destroyResource(binding.getName(), binding.getClassName(), object);
         }
 
-        try {
-            containerSystem.getJNDIContext().unbind("java:global");
-        } catch (NamingException ignored) {
-            // no-op
-        }
-
         SystemInstance.get().removeComponent(OpenEjbConfiguration.class);
         SystemInstance.get().removeComponent(JtaEntityManagerRegistry.class);
         SystemInstance.get().removeComponent(TransactionSynchronizationRegistry.class);
@@ -1223,6 +1217,11 @@
                 }
             }
         }
+        try {
+            containerSystem.getJNDIContext().unbind("java:global");
+        } catch (NamingException ignored) {
+            // no-op
+        }
 
         EjbResolver globalResolver = new EjbResolver(null, EjbResolver.Scope.GLOBAL);
         for (AppInfo info : deployedApplications.values()) {
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContext.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContext.java
index 031c719..94aefef 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContext.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContext.java
@@ -17,6 +17,8 @@
  */
 package org.apache.tomee.catalina;
 
+import org.apache.naming.ContextBindings;
+import org.apache.openejb.assembler.DeployerEjb;
 import org.apache.openejb.core.ThreadContext;
 
 import javax.naming.Binding;
@@ -254,9 +256,19 @@
      */
     private Context getThreadContext() throws NamingException {
         ThreadContext threadContext = ThreadContext.getThreadContext();
+        if (skipEjbContext(threadContext)) {
+            return ContextBindings.getClassLoader();
+        }
         Context context = threadContext.getBeanContext().getJndiEnc();
         return context;
     }
 
+    private boolean skipEjbContext(final ThreadContext threadContext) {
+        // we use it to deploy so if any lookup is done during the deployment
+        // we don't want to get the DeployerEjb JNDI tree
+        // since this method is pretty quick that's not an issue to do the test
+        return DeployerEjb.class.equals(threadContext.getBeanContext().getBeanClass());
+    }
+
 }
 
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Warmup.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Warmup.java
index 3b58e47..62becb9 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Warmup.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Warmup.java
@@ -17,7 +17,10 @@
 package org.apache.tomee.catalina;
 
 import org.apache.openejb.config.TldScanner;
+import org.apache.openejb.jee.JaxbJavaee;
+import org.apache.openejb.jee.WebApp;
 
+import javax.xml.bind.JAXBException;
 import java.util.concurrent.Semaphore;
 
 /**
@@ -154,6 +157,11 @@
 
         final ClassLoader loader = Warmup.class.getClassLoader();
 
+        final JaxbJavaeeLoad jaxbJavaeeLoad = new JaxbJavaeeLoad(WebApp.class);
+        final Thread jaxb = new Thread(jaxbJavaeeLoad);
+        jaxb.setDaemon(true);
+        jaxb.start();
+
         try { // see org.apache.openejb.Core
             Class.forName("org.apache.openejb.util.Logger", true, loader);
             Class.forName("org.apache.openejb.util.JuliLogStreamFactory", true, loader);
@@ -165,6 +173,7 @@
         final Semaphore semaphore = new Semaphore(0);
 
         final Thread tld = new Thread() {
+
             @Override
             public void run() {
                 try {
@@ -205,9 +214,27 @@
         try {
             semaphore.acquire(permits);
             tld.join();
+            jaxb.join();
         } catch (InterruptedException e) {
             Thread.interrupted();
         }
     }
 
+
+    private static class JaxbJavaeeLoad implements Runnable {
+
+        private final Class<?> type;
+
+        private JaxbJavaeeLoad(Class<?> type) {
+            this.type = type;
+        }
+
+        @Override
+        public void run() {
+            try {
+                JaxbJavaee.getContext(type);
+            } catch (JAXBException e) {
+            }
+        }
+    }
 }