Trouble deploying my webapp to Tomcat7

Mike Nitchie

This is my first effort deploying my own App to a remote tomcat server. I've searched and searched my problem and can't find a solution.

I created a Maven project in eclipse with the webapp archetype. My local tomcat installation is listening on port 8080, but I have the tomcat installation on my server listening on `port 80'. I've completed and tested my app in Eclipse with Maven and Tomcat, and it works just fine.

I exported my project to a .war file and renamed it ROOT.war. Then, with the server stopped, I uploaded it into /var/lib/tomcat7/webapps/. Then I started the server and the .war file autodeployed into the /var/lib/tomcat7/webapps/ROOT. When I navigated to www.myDomain.com I got a "link seems to be broken" error from Chrome, and a 404 status code.

I checked the logs and got this:

INFO: Deploying web application archive /var/lib/tomcat7/webapps/ROOT.war
Sep 22, 2013 6:31:06 PM org.apache.catalina.startup.ContextConfig init
SEVERE: Exception fixing docBase for context []
java.util.zip.ZipException: error in opening zip file
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.<init>(ZipFile.java:131)
    at java.util.jar.JarFile.<init>(JarFile.java:150)
    at java.util.jar.JarFile.<init>(JarFile.java:87)
    at sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:90)
    at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:66)
    at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:86)
    at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:122)
    at sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:89)
    at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:112)
    at org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:697)
    at org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:820)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:363)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:401)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:110)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:958)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1599)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)
Sep 22, 2013 6:31:06 PM org.apache.catalina.core.StandardContext resourcesStart
SEVERE: Error starting static Resources
java.lang.IllegalArgumentException: Invalid or unreadable WAR file : error in opening zip file

I tried re-creating the .war file and trying again, but with no luck. I read some articles explaining that this may be due to a corrupted war file (even though the file structure showed up on my server in full after restarting), so I decided to skip creating a .war file completely. I created a copy of myWebappProject that I called ROOT. Then I just uploaded the ROOT directory in my workspace directly to .../webapps/ROOT.

After starting the server and navigating to www.myDomain.com and www.myDomain.com/ROOT and www.myDomain.com/index.jsp etcetera etcetera I got the stock error message from Tomcat reading The requested resource (/ROOT/) is not available. and variations thereof. There were no exceptions in the log files that provided useful feedback.

The directory structure that I'm using is the default for a Maven project with the webapp archetype.

Thanks in advance for your help. Let me know if there is any other code or log files I can post.

EDIT per @Aaron's recommendation, I tried unzipping the warfile myself and running again. More issues this time:

INFO: validateJarFile(/var/lib/tomcat7/webapps/ROOT/WEB-INF/lib/servlet-api-3.0-alpha-1.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Sep 22, 2013 8:35:18 PM org.apache.catalina.core.ContainerBase addChildInternal
SEVERE: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component         [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:958)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1599)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.UnsupportedClassVersionError: uploadServlet/Uploader : Unsupported major.minor version 51.0 (unable to load class uploadServlet.Uploader)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2840)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1160)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1668)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:108)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:58)
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:381)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:858)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:345)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)

EDIT

Thanks everyone for the help so far. I downgraded to Java 1.6 on my development machine as my server is running Java 1.6.0_24. I also used Maven to create the .war file via mvn package. I'm still getting a 404 and the 'broken link' error from Chrome. Here is the server start-up log.

INFO: Deploying web application archive /var/lib/tomcat7/webapps/ROOT.war
Sep 22, 2013 9:45:53 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/var/lib/tomcat7/webapps/ROOT/WEB-INF/lib/servlet-api-3.0-alpha-    1.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class:    javax/servlet/Servlet.class
Sep 22, 2013 9:45:53 PM org.apache.catalina.core.ContainerBase addChildInternal
SEVERE: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component     [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:958)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1599)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.UnsupportedClassVersionError: uploadServlet/Uploader : Unsupported     major.minor version 51.0 (unable to load class uploadServlet.Uploader)
    at     org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2840)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1160)
at     org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2840)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1160)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1668)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546)
    at  org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSe t.java:108)
    at  org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java: 58)
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:381)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:858)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:345)
    at  org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 11 more
Sep 22, 2013 9:45:53 PM org.apache.catalina.startup.HostConfig deployWAR
SEVERE: Error deploying web application archive /var/lib/tomcat7/webapps/ROOT.war
java.lang.IllegalStateException: ContainerBase.addChild: start:     org.apache.catalina.LifecycleException: Failed to start component    [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:898)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:958)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1599)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)
Sep 22, 2013 9:45:53 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /var/lib/tomcat7/webapps/ROOTBackup
Sep 22, 2013 9:46:30 PM org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took  [36,729] milliseconds.
Sep 22, 2013 9:46:30 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-80"]
Sep 22, 2013 9:46:30 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 37873 ms
Paaske

From your stacktrace, I see two things;

  1. the servlet api is included in your war-file. This is not allowed (by servlet spec), but it shouldn't prevent the app from starting. Try changing the <scope> to provided for your servlet dependency in your pom.xml

  2. Minor / major version is wrong. This usually means that you have compiled for a newer Java version locally than what you have on your server. (e.g. compiling Java 7 locally and running Java 6 on the server). Try setting the source and target to the Java version you are running on the server in you pom.xml (maven-compiler-plugin)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在NetBeans中将Java WebApp部署到tomcat7

来自分类Dev

在NetBeans中将Java WebApp部署到tomcat7

来自分类Dev

在Tomcat7上运行用Glassfish4开发的webapp

来自分类Dev

无法使用WebApp启动tomcat7(Spring + Hibernate + Hibernate Search 4.5)NoClassDefFound:CorruptIndexException

来自分类Dev

通过mvn tomcat7:deploy部署时,Maven Webapp无法正常工作

来自分类Dev

Tomcat Webapp的工作目录

来自分类Dev

Tomcat中的JPA Webapp

来自分类Dev

Tomcat Webapp中包含的Derby

来自分类Dev

Tomcat Webapp无法正常工作

来自分类Dev

从tomcat webapp的eclipse导入项目

来自分类Dev

Tomcat Webapp中包含的Derby

来自分类Dev

Alfresco和Webapp Tomcat并行

来自分类Dev

Tomcat 日历 Webapp mysql: MySQLNonTransientConnectionException:

来自分类Dev

tomcat7上的OutOfMemoryError

来自分类Dev

无法运行tomcat7

来自分类Dev

无法删除tomcat7

来自分类Dev

tomcat7 WindowsOS的UnsatisfiedLinkError

来自分类Dev

针对Websphere 7测试webapp

来自分类Dev

Having trouble with my java factorial assignment

来自分类Dev

Tomcat上的Webapp没有响应

来自分类Dev

如何启动Mondrian Pentaho的tomcat Webapp

来自分类Dev

Azure WebApp 中的 Tomcat 无法启动

来自分类Dev

获取tomcat Valve类中的webapp名称

来自分类Dev

tomcat7 servlet中的内存泄漏

来自分类Dev

Tomcat7部署错误

来自分类Dev

Tomcat7检测内存泄漏

来自分类Dev

Vaadin和Tomcat7问题登录

来自分类Dev

Apache tomcat7作为Windows服务

来自分类Dev

在tomcat7中设置子域