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?