You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/07/25 01:07:26 UTC

svn commit: r1613324 - in /tomee/tomee/trunk/tomee/tomee-catalina/src/main: java/org/apache/tomee/catalina/ java/org/apache/tomee/catalina/websocket/ resources/META-INF/services/

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