I'm losing my mind here. I finally went full standard to see if the changes in tomcat 7 would allow me to avoid custom class loaders and contexts, but ran into a catch-22 issue.
I was getting: java.lang.ClassCastException: com.sun.xml.ws.transport.http.servlet.WSServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer at org.apache.catalina.startup.ContextConfig.getServletContainerInitializer(Con textConfig.java:1654) at org.apache.catalina.startup.ContextConfig.processServletContainerInitializer s(ContextConfig.java:1562) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1270) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java: 878) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java: 376) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSuppor t.java:119) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java :90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java: 5322) So I tracked down where the WSServletContainerInitializer was coming from and removed the jar file. Now I get: SEVERE: Error configuring application listener of class org.apache.catalina.deploy.ApplicationListener@1b104d7 java.lang.ClassNotFoundException: com.sun.xml.ws.transport.http.servlet.WSServletContextListener at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.jav a:1714) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.jav a:1559) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceMan ager.java:527) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(Def aultInstanceManager.java:509) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceM anager.java:137) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java: 4854) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java: 5434) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:9 01) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1113) at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1 671) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.ja va:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:9 08) at java.lang.Thread.run(Thread.java:662) and what's in the context is: <?xml version="1.0" encoding="UTF-8"?> <Context path="/idwm" docBase="${catalina.home}/webapps/idwm" > <Resources className="org.apache.naming.resources.VirtualDirContext" extraResourcePaths="/idwm/*/=/usr/us/idwm/plugins/*/"/> <Loader className="org.apache.catalina.loader.VirtualWebappLoader" virtualClasspath="/usr/us/idwm/plugins/*/WEB-INF/classes; /usr/us/idwm/plugins/*/WEB-INF/lib/*.jar; /usr/us/idwm/plugins/*/;" /> </Context> So now what? I'm using the classes provided by apache and I'm damned if I do and damned if I don't. Is there even a solution to this?