0

I am building an application where I am building my code from git using Jenkins and deploying it to tomcat server image. Below are my configurations:

Jenkins build is on AWS and deploys war to app server on AWS. I have a docker installed and creating a container using the tomcat v8.0 image. sudo docker run -d --name tomcat-container -p 8080:8080 tomcat:8.0

When I start the container and try to access the application http://<>:<>/application, I get an error. Below is what I see,

10-May-2021 16:15:18.516 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
10-May-2021 16:15:18.516 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            4.14.231-173.361.amzn2.x86_64
10-May-2021 16:15:18.516 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
10-May-2021 16:15:18.517 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/lib/jvm/java-7-openjdk-amd64/jre
10-May-2021 16:15:18.517 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.7.0_181-b01
10-May-2021 16:15:18.517 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
10-May-2021 16:15:18.518 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /usr/local/tomcat
10-May-2021 16:15:18.518 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /usr/local/tomcat

10-May-2021 16:17:41.032 SEVERE [14] org.apache.catalina.startup.HostConfig.deployWARs Error waiting for multi-thread deployment of WAR files to complete
 java.lang.InterruptedException
    at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:400)
    at java.util.concurrent.FutureTask.get(FutureTask.java:187)
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:766)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:436)
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1623)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:318)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:95)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1170)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1379)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1383)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1351)
    at java.lang.Thread.run(Thread.java:748)

10-May-2021 16:17:41.486 SEVERE [localhost-startStop-2] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/bankingapi]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:755)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:731)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:973)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1850)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:473)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.UnsupportedClassVersionError: org/springframework/web/SpringServletContainerInitializer : Unsupported major.minor version 52.0 (unable to load class org.springframework.web.SpringServletContainerInitializer)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2532)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:872)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1321)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:278)

POM.xml:

    <properties>
        <java.version>1.7</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <springfox-version>2.9.2</springfox-version>
    </properties>

Please advise on what could be going wrong. I cannot use the current version of tomcat as my application cannot run on that.

Olaf Kock
  • 46,930
  • 8
  • 59
  • 90
Vikas
  • 11
  • 1
  • 3
  • Does this answer your question? [How to fix java.lang.UnsupportedClassVersionError: Unsupported major.minor version](https://stackoverflow.com/questions/10382929/how-to-fix-java-lang-unsupportedclassversionerror-unsupported-major-minor-versi) – Piotr P. Karwasz May 10 '21 at 19:10
  • 1
    Basically the problem is not the version of Tomcat (although 8.0 is not supported since 2018), but the version of Java (Java 7 is unsupported since 2015), which is too old for your Spring libraries. – Piotr P. Karwasz May 10 '21 at 19:16

1 Answers1

0

Thank you @PiotrPKarwasz for the suggestion. I used the tomcat v9 docker container and I was able to overcome the issue. I do not have this issue anymore.

Vikas
  • 11
  • 1
  • 3