Author: rmannibucau
Date: Thu Jul 24 23:07:26 2014
New Revision: 1613324

URL: http://svn.apache.org/r1613324
Log:
avoid hack since tomcat allows a ServiceLoader mecanism for websockets

Added:
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/resources/META-INF/services/
    
tomee/tomee/trunk/tomee/tomee-catalina/src/main/resources/META-INF/services/javax.websocket.server.ServerEndpointConfig$Configurator
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=1613324&r1=1613323&r2=1613324&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
 Thu Jul 24 23:07:26 2014
@@ -278,11 +278,6 @@ public class TomcatWebAppBuilder impleme
         final StandardServer standardServer = TomcatHelper.getServer();
         globalListenerSupport = new GlobalListenerSupport(standardServer, 
this);
 
-        // force tomcat to use our custom WebSocket ServerEndpointConfigurator
-        forceEEServerEndpointConfigurator();
-
-        // could search mbeans
-
         //Getting host config listeners
         hosts = new Hosts();
         SystemInstance.get().setComponent(Hosts.class, hosts);
@@ -327,27 +322,6 @@ public class TomcatWebAppBuilder impleme
         deploymentLoader = new DeploymentLoader();
     }
 
-    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 Class<?> clazz = 
Thread.currentThread().getContextClassLoader().loadClass("javax.websocket.server.ServerEndpointConfig$Configurator");
-            final Field f = clazz.getDeclaredField("defaultImpl");
-            final boolean acc = f.isAccessible();
-            f.setAccessible(true);
-            try {
-                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);
-        }
-    }
-
     private void manageCluster(final Cluster cluster) {
         if (cluster == null || cluster instanceof SimpleTomEETcpCluster) {
             return;
@@ -2435,4 +2409,8 @@ public class TomcatWebAppBuilder impleme
     public Map<String, Realm> getRealms() {
         return realms;
     }
+
+    public Map<ClassLoader, InstanceManager> getInstanceManagers() {
+        return instanceManagers;
+    }
 }

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=1613324&r1=1613323&r2=1613324&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
 Thu Jul 24 23:07:26 2014
@@ -16,16 +16,18 @@
  */
 package org.apache.tomee.catalina.websocket;
 
+import org.apache.openejb.loader.SystemInstance;
 import org.apache.tomcat.InstanceManager;
 import org.apache.tomcat.websocket.server.DefaultServerEndpointConfigurator;
+import org.apache.tomee.catalina.TomcatWebAppBuilder;
 
 import java.util.Map;
 
 public class JavaEEDefaultServerEnpointConfigurator extends 
DefaultServerEndpointConfigurator {
     private final Map<ClassLoader, InstanceManager> instanceManagers;
 
-    public JavaEEDefaultServerEnpointConfigurator(final Map<ClassLoader, 
InstanceManager> instanceManagers) {
-        this.instanceManagers = instanceManagers;
+    public JavaEEDefaultServerEnpointConfigurator() {
+        this.instanceManagers = 
SystemInstance.get().getComponent(TomcatWebAppBuilder.class).getInstanceManagers();
     }
 
     @Override

Added: 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/resources/META-INF/services/javax.websocket.server.ServerEndpointConfig$Configurator
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/resources/META-INF/services/javax.websocket.server.ServerEndpointConfig%24Configurator?rev=1613324&view=auto
==============================================================================
--- 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/resources/META-INF/services/javax.websocket.server.ServerEndpointConfig$Configurator
 (added)
+++ 
tomee/tomee/trunk/tomee/tomee-catalina/src/main/resources/META-INF/services/javax.websocket.server.ServerEndpointConfig$Configurator
 Thu Jul 24 23:07:26 2014
@@ -0,0 +1 @@
+org.apache.tomee.catalina.websocket.JavaEEDefaultServerEnpointConfigurator


Reply via email to