Author: rmannibucau
Date: Tue Oct 29 06:22:47 2013
New Revision: 1536594

URL: http://svn.apache.org/r1536594
Log:
no need of websockets for tomee embedded by default + prefixing tomee realm 
objectname to avoid conflicts

Modified:
    
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
    
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/websocket/JavaEEDefaultServerEnpointConfigurator.java

Modified: 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1536594&r1=1536593&r2=1536594&view=diff
==============================================================================
--- 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 (original)
+++ 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 Tue Oct 29 06:22:47 2013
@@ -49,6 +49,7 @@ import org.apache.catalina.ha.CatalinaCl
 import org.apache.catalina.ha.tcp.SimpleTcpCluster;
 import org.apache.catalina.loader.VirtualWebappLoader;
 import org.apache.catalina.loader.WebappLoader;
+import org.apache.catalina.realm.RealmBase;
 import org.apache.catalina.session.StandardManager;
 import org.apache.catalina.startup.Constants;
 import org.apache.catalina.startup.ContextConfig;
@@ -141,7 +142,6 @@ import javax.servlet.jsp.JspFactory;
 import javax.sql.DataSource;
 import javax.transaction.TransactionManager;
 import javax.transaction.TransactionSynchronizationRegistry;
-import javax.websocket.server.ServerEndpointConfig;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -160,6 +160,7 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 import java.util.TreeMap;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 
@@ -206,6 +207,8 @@ public class TomcatWebAppBuilder impleme
         }
     }
 
+    private final Map<ClassLoader, InstanceManager> instanceManagers = new 
ConcurrentHashMap<ClassLoader, InstanceManager>();
+
     /**
      * Context information for web applications
      */
@@ -315,19 +318,22 @@ public class TomcatWebAppBuilder impleme
         deploymentLoader = new DeploymentLoader();
     }
 
-    private static void forceEEServerEndpointConfigurator() {
+    private void forceEEServerEndpointConfigurator() {
         // by reflection cause
         // 1- tomcat algorithm uses ServiceLoader.next() so no real way to 
ensure it is our META-INF/services/...
         // 2- avoids getResources which can be slow depending the server config
         try {
-            final Field f = 
ServerEndpointConfig.Configurator.class.getDeclaredField("defaultImpl");
+            final Class<?> clazz = 
Thread.currentThread().getContextClassLoader().loadClass("javax.websocket.server.ServerEndpointConfig$Configurator");
+            final Field f = clazz.getDeclaredField("defaultImpl");
             boolean acc = f.isAccessible();
             f.setAccessible(true);
             try {
-                f.set(null, new JavaEEDefaultServerEnpointConfigurator());
+                f.set(null, new 
JavaEEDefaultServerEnpointConfigurator(instanceManagers));
             } finally {
                 f.setAccessible(acc);
             }
+        } catch (final ClassNotFoundException cnfe) {
+            // no-op
         } catch (final Exception e) {
             logger.warning("Can't set TomEE 
ServerEndpointConfig$Configurator", e);
         }
@@ -372,6 +378,9 @@ public class TomcatWebAppBuilder impleme
 
     protected Realm tomeeRealm(final Realm realm) {
         final TomEERealm trealm = new TomEERealm();
+        if (RealmBase.class.isInstance(realm)) {
+            trealm.setRealmPath("/tomee/" + 
RealmBase.class.cast(realm).getRealmPath());
+        }
         trealm.addRealm(realm);
         return trealm;
     }
@@ -1323,7 +1332,7 @@ public class TomcatWebAppBuilder impleme
 
                 final JavaeeInstanceManager instanceManager = new 
JavaeeInstanceManager(webContext, standardContext);
                 standardContext.setInstanceManager(instanceManager);
-                
JavaEEDefaultServerEnpointConfigurator.registerInstanceManager(classLoader, 
instanceManager);
+                instanceManagers.put(classLoader, instanceManager);
                 
standardContext.getServletContext().setAttribute(InstanceManager.class.getName(),
 standardContext.getInstanceManager());
 
             } catch (Exception e) {
@@ -1832,8 +1841,11 @@ public class TomcatWebAppBuilder impleme
                 logger.error("error stopping classloader of webapp " + 
standardContext.getName(), e);
             }
             ClassLoaderUtil.cleanOpenJPACache(old);
-            
JavaEEDefaultServerEnpointConfigurator.unregisterInstanceManager(old);
+            instanceManagers.remove(old);
+        } else if (standardContext.getLoader() != null && 
standardContext.getLoader().getClassLoader() != null) {
+            
instanceManagers.remove(standardContext.getLoader().getClassLoader());
         }
+
         if (contextInfo != null && (contextInfo.appInfo == null || 
contextInfo.appInfo.webAppAlone)) {
             removeContextInfo(standardContext);
         }

Modified: 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/websocket/JavaEEDefaultServerEnpointConfigurator.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/websocket/JavaEEDefaultServerEnpointConfigurator.java?rev=1536594&r1=1536593&r2=1536594&view=diff
==============================================================================
--- 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/websocket/JavaEEDefaultServerEnpointConfigurator.java
 (original)
+++ 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/websocket/JavaEEDefaultServerEnpointConfigurator.java
 Tue Oct 29 06:22:47 2013
@@ -20,14 +20,17 @@ import org.apache.tomcat.InstanceManager
 import org.apache.tomcat.websocket.server.DefaultServerEndpointConfigurator;
 
 import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
 
 public class JavaEEDefaultServerEnpointConfigurator extends 
DefaultServerEndpointConfigurator {
-    private static final Map<ClassLoader, InstanceManager> INSTANCE_MANAGERS = 
new ConcurrentHashMap<ClassLoader, InstanceManager>();
+    private final Map<ClassLoader, InstanceManager> instanceManagers;
+
+    public JavaEEDefaultServerEnpointConfigurator(final Map<ClassLoader, 
InstanceManager> instanceManagers) {
+        this.instanceManagers = instanceManagers;
+    }
 
     @Override
     public <T> T getEndpointInstance(final Class<T> clazz) throws 
InstantiationException {
-        final InstanceManager instanceManager = 
INSTANCE_MANAGERS.get(clazz.getClassLoader());
+        final InstanceManager instanceManager = 
instanceManagers.get(clazz.getClassLoader());
         if (instanceManager == null) {
             return super.getEndpointInstance(clazz);
         }
@@ -41,12 +44,4 @@ public class JavaEEDefaultServerEnpointC
             throw new InstantiationException(e.getMessage());
         }
     }
-
-    public static void registerInstanceManager(final ClassLoader loader, final 
InstanceManager manager) {
-        INSTANCE_MANAGERS.put(loader, manager);
-    }
-
-    public static void unregisterInstanceManager(final ClassLoader loader) {
-        INSTANCE_MANAGERS.remove(loader);
-    }
 }


Reply via email to