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