Grails 3.0.1 to tomcat 7.0.55 deploy issue, similar to GRAILS-12105 but the fix doesn't work

379 views
Skip to first unread message

virtual dogbert

unread,
Jun 10, 2015, 3:33:56 PM6/10/15
to grails-de...@googlegroups.com
So I'm trying to get grail 3.0.1 running on tomcat 7.0.55 and I get error on deployment, I think it has something to do with the embedded tomcat jars, because of what I've found here:

and I've tried using:

provided "org.springframework.boot:spring-boot-starter-tomcat"
over
compile "org.springframework.boot:spring-boot-starter-tomcat"

but the jars for the embedded tomcat are still in the war. If I remove the jars the war deploys fine. Is there something else I can/should do to work around this issue.  Here the error that I see in the logs:

Jun 10, 2015 10:01:52 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/home/virtualdogbert/progs/tomcat/webapps/mrui/WEB-INF/lib/tomcat-embed-core-8.0.20.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class
Jun 10, 2015 10:01:52 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/home/virtualdogbert/progs/tomcat/webapps/mrui/WEB-INF/lib/tomcat-embed-el-8.0.20.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/el/Expression.class
Jun 10, 2015 10:01:52 AM org.apache.catalina.deploy.WebXml setVersion
WARNING: Unknown version string [3.1]. Default version will be used.
Jun 10, 2015 10:02:04 AM org.apache.catalina.core.ContainerBase addChildInternal
SEVERE: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/mrui]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:672)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1862)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
at org.apache.tomcat.websocket.server.WsServerContainer.<init>(WsServerContainer.java:147)
at org.apache.tomcat.websocket.server.WsSci.init(WsSci.java:131)
at org.apache.tomcat.websocket.server.WsSci.onStartup(WsSci.java:47)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5479)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 10 more

Anders Kristian Andersen

unread,
Jun 11, 2015, 1:23:35 AM6/11/15
to grails-de...@googlegroups.com
The trick that works for us is right here:
build.gradle

dependencies {

.....

    provided "org.springframework.boot:spring-boot-starter-tomcat"
if(!useTomcat7){
compile "org.springframework.boot:spring-boot-starter-tomcat"
}

}

virtual dogbert

unread,
Jun 12, 2015, 9:08:43 AM6/12/15
to grails-de...@googlegroups.com
The key that I glossed over is that I needed to change war() to gradle.war() in my build script, then this works fine.
Reply all
Reply to author
Forward
0 new messages