0

I'm trying to deploy a Springboot MVC web on Tomcat. My views (template) use Thymeleaf. I followed this question, and apparently I did what was supposed to do (I have SpringApplicationBuilder, dependencies, etc.)

@Controller:

@GetMapping("/")
public String fetchLogList(Model model) {
    model.addAttribute("logs", logRepository.findAll());
    return "logsview";
}
@GetMapping("/gantt")
public String gatt(Model model) {
    model.addAttribute("logs", logRepository.findAll());
    return "gantt3";
}

Structure:

enter image description here

When running the project in IntelliJ, http://localhost:8085/ show the "logsview".

I put a dummy plain index.html in webapp dir and I can see the content of index.html with http://localhost:8080/logsview-SNAPSHOT/. But I want http://localhost:8080/logsview-SNAPSHOT/ to show logsview? http://localhost:8080/logsview-SNAPSHOT/gantt3 gives 404 error.

If I don't have that plain index.html, the war file on Tomcat will show 404 error.

  • How do I package a war file that when deploy via war,the default content is logsview?
  • I think my project structure is not correct for Spring MVC to pick up my view. Some examples have templates/views in resources, other have their front end in webapp.

Edit: buil.gradle file

plugins {
    id 'org.springframework.boot' version '2.7.4'
    id 'io.spring.dependency-management' version '1.0.14.RELEASE'
    id 'java'
    id 'war'
}
group = 'com.tool'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
    mavenCentral()
}
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    // https://mvnrepository.com/artifact/org.jfree/jcommon
    implementation group: 'org.jfree', name: 'jcommon', version: '1.0.23'
    // https://mvnrepository.com/artifact/org.jfree/jfreechart
    implementation group: 'org.jfree', name: 'jfreechart', version: '1.0.19'
    implementation 'org.jetbrains:annotations:20.1.0'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'org.postgresql:postgresql'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
    useJUnitPlatform()
}

Edit2: follow @Rohit's answer and still got 404 error. Catalina logs:

22-Nov-2022 11:17:02.751 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.undeploy Undeploying context [/logsview-0.0.1-SNAPSHOT-plain]
22-Nov-2022 11:17:03.273 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.undeploy Undeploying context [/spring-boot-1.0-plain]
22-Nov-2022 11:17:03.286 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/tomcat/apache-tomcat-10.0.23/webapps/logsview-0.0.1-SNAPSHOT-plain.war]
22-Nov-2022 11:17:04.732 INFO [Catalina-utility-2] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
22-Nov-2022 11:17:04.734 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/opt/tomcat/apache-tomcat-10.0.23/webapps/logsview-0.0.1-SNAPSHOT-plain.war] has finished in [1,448] ms
22-Nov-2022 11:17:51.524 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/10.0.23
22-Nov-2022 11:17:51.527 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Jul 14 2022 08:16:11 UTC
22-Nov-2022 11:17:51.527 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 10.0.23.0
22-Nov-2022 11:17:51.527 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
22-Nov-2022 11:17:51.527 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            5.15.0-53-generic
22-Nov-2022 11:17:51.527 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
22-Nov-2022 11:17:51.528 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/lib/jvm/java-11-openjdk-amd64
22-Nov-2022 11:17:51.528 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           11.0.17+8-post-Ubuntu-1ubuntu220.04
22-Nov-2022 11:17:51.528 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Ubuntu
22-Nov-2022 11:17:51.528 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /opt/tomcat/apache-tomcat-10.0.23
22-Nov-2022 11:17:51.528 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /opt/tomcat/apache-tomcat-10.0.23
22-Nov-2022 11:17:51.541 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
22-Nov-2022 11:17:51.542 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
22-Nov-2022 11:17:51.542 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
22-Nov-2022 11:17:51.542 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
22-Nov-2022 11:17:51.542 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
22-Nov-2022 11:17:51.542 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/opt/tomcat/latest/conf/logging.properties
22-Nov-2022 11:17:51.542 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
22-Nov-2022 11:17:51.542 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
22-Nov-2022 11:17:51.542 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
22-Nov-2022 11:17:51.543 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
22-Nov-2022 11:17:51.543 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
22-Nov-2022 11:17:51.543 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/opt/tomcat/latest
22-Nov-2022 11:17:51.543 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/opt/tomcat/latest
22-Nov-2022 11:17:51.543 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/opt/tomcat/latest/temp
22-Nov-2022 11:17:51.546 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path: [/usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib]
22-Nov-2022 11:17:51.856 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
22-Nov-2022 11:17:51.869 SEVERE [main] org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to initialize component [Connector[HTTP/1.1-8080]]
    org.apache.catalina.LifecycleException: Protocol handler initialization failed
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:1055)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
        at org.apache.catalina.core.StandardService.initInternal(StandardService.java:556)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
        at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:1045)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:747)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:769)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:305)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:475)
    Caused by: java.net.BindException: Address already in use
        at java.base/sun.nio.ch.Net.bind0(Native Method)
        at java.base/sun.nio.ch.Net.bind(Net.java:459)
        at java.base/sun.nio.ch.Net.bind(Net.java:448)
        at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:227)
        at org.apache.tomcat.util.net.NioEndpoint.initServerSocket(NioEndpoint.java:246)
        at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:201)
        at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1192)
        at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1205)
        at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:580)
        at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:82)
        at org.apache.catalina.connector.Connector.initInternal(Connector.java:1052)
        ... 13 more
22-Nov-2022 11:17:51.870 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [523] milliseconds
22-Nov-2022 11:17:51.920 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
22-Nov-2022 11:17:51.921 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.0.23]
22-Nov-2022 11:17:51.933 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/tomcat/apache-tomcat-10.0.23/webapps/logsview-0.0.1-SNAPSHOT-plain.war]
22-Nov-2022 11:17:53.591 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
22-Nov-2022 11:17:53.632 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/opt/tomcat/apache-tomcat-10.0.23/webapps/logsview-0.0.1-SNAPSHOT-plain.war] has finished in [1,699] ms
22-Nov-2022 11:17:53.633 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/tomcat/apache-tomcat-10.0.23/webapps/hello-world-app.war]
22-Nov-2022 11:17:54.776 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
22-Nov-2022 11:17:54.779 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/opt/tomcat/apache-tomcat-10.0.23/webapps/hello-world-app.war] has finished in [1,146] ms
22-Nov-2022 11:17:54.780 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/tomcat/apache-tomcat-10.0.23/webapps/Calculator.war]
22-Nov-2022 11:17:56.242 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
22-Nov-2022 11:17:56.247 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/opt/tomcat/apache-tomcat-10.0.23/webapps/Calculator.war] has finished in [1,467] ms
22-Nov-2022 11:17:56.248 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/docs]
22-Nov-2022 11:17:56.262 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/docs] has finished in [14] ms
22-Nov-2022 11:17:56.262 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/ROOT]
22-Nov-2022 11:17:56.274 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/ROOT] has finished in [12] ms
22-Nov-2022 11:17:56.274 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/manager]
22-Nov-2022 11:17:56.303 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/manager] has finished in [29] ms
22-Nov-2022 11:17:56.304 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/examples]
22-Nov-2022 11:17:56.446 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/examples] has finished in [143] ms
22-Nov-2022 11:17:56.446 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/host-manager]
22-Nov-2022 11:17:56.460 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/host-manager] has finished in [14] ms
22-Nov-2022 11:17:56.460 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/hello_world_app_war]
22-Nov-2022 11:17:57.699 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
22-Nov-2022 11:17:57.701 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/hello_world_app_war] has finished in [1,241] ms
22-Nov-2022 11:17:57.702 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/BillingCalculator-1.0-plain.war]
22-Nov-2022 11:17:59.297 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
22-Nov-2022 11:17:59.300 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/BillingCalculator-1.0-plain.war] has finished in [1,598] ms
22-Nov-2022 11:17:59.305 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [7434] milliseconds
22-Nov-2022 11:17:59.307 SEVERE [main] org.apache.catalina.core.StandardServer.await Failed to create server shutdown socket on address [localhost] and port [8005] (base port [8005] and offset [0])
    java.net.BindException: Address already in use (Bind failed)
        at java.base/java.net.PlainSocketImpl.socketBind(Native Method)
        at java.base/java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:452)
        at java.base/java.net.ServerSocket.bind(ServerSocket.java:395)
        at java.base/java.net.ServerSocket.<init>(ServerSocket.java:257)
        at org.apache.catalina.core.StandardServer.await(StandardServer.java:580)
        at org.apache.catalina.startup.Catalina.await(Catalina.java:887)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:833)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)
22-Nov-2022 11:17:59.308 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"]
22-Nov-2022 11:17:59.308 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
22-Nov-2022 11:17:59.340 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"]
22-Nov-2022 11:17:59.342 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]
22-Nov-2022 11:18:35.245 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.undeploy Undeploying context [/logsview-0.0.1-SNAPSHOT-plain]
22-Nov-2022 11:18:35.749 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.undeploy Undeploying context [/hello-world-app]
22-Nov-2022 11:18:36.254 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.undeploy Undeploying context [/hello_world_app_war]
22-Nov-2022 11:18:46.258 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/hello_world_app_war]
22-Nov-2022 11:18:46.271 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/hello_world_app_war] has finished in [13] ms
22-Nov-2022 11:21:26.292 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/tomcat/apache-tomcat-10.0.23/webapps/logsview-0.0.1-SNAPSHOT-plain.war]
22-Nov-2022 11:21:27.582 INFO [Catalina-utility-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
22-Nov-2022 11:21:27.585 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/opt/tomcat/apache-tomcat-10.0.23/webapps/logsview-0.0.1-SNAPSHOT-plain.war] has finished in [1,292] ms
22-Nov-2022 16:20:59.572 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/tomcat/apache-tomcat-10.0.23/webapps/hello-world-app.war]
22-Nov-2022 16:21:00.566 INFO [Catalina-utility-2] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
22-Nov-2022 16:21:00.568 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/opt/tomcat/apache-tomcat-10.0.23/webapps/hello-world-app.war] has finished in [995] ms
22-Nov-2022 16:21:41.076 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.undeploy Undeploying context [/logsview-0.0.1-SNAPSHOT-plain]
22-Nov-2022 16:21:41.583 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.undeploy Undeploying context [/hello-world-app]
22-Nov-2022 16:21:42.100 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.undeploy Undeploying context [/hello_world_app_war]
22-Nov-2022 16:22:22.111 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/tomcat/apache-tomcat-10.0.23/webapps/hello-world-app.war]
22-Nov-2022 16:22:22.986 INFO [Catalina-utility-2] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
22-Nov-2022 16:22:22.987 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/opt/tomcat/apache-tomcat-10.0.23/webapps/hello-world-app.war] has finished in [877] ms
22-Nov-2022 16:28:22.432 WARNING [main] org.apache.catalina.core.StandardServer.await Invalid shutdown command [] received
22-Nov-2022 16:28:33.032 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/hello_world_app_war]
22-Nov-2022 16:28:33.047 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/apache-tomcat-10.0.23/webapps/hello_world_app_war] has finished in [15] ms

Update:

I deleted other war file and keep the defaults. Webapps dir: enter image description here

Hello_World_App shows 404 error and Hello_World_App_war shows 403 error.

Elly
  • 145
  • 7

1 Answers1

0

Your code looks fine to me but there could be other issues either in some configuration or in tomcat deployment. But to help you I have prepared a working app. Please perform the below steps.

  1. Clone application - https://github.com/javamultiplex/spring-boot-mvc-app
git clone git@github.com:javamultiplex/spring-boot-mvc-app.git
  1. Create application build (I am using maven but you can use gradle as well)
mvn clean package -DskipTests
  1. Copy hello-world-app.war file from the target folder and paste in Tomcat webapps folder.

enter image description here

  1. Start Tomcat server

enter image description here

  1. Access URLS

a) http://localhost:8080/hello-world-app/

enter image description here

b) http://localhost:8080/hello-world-app/fun

enter image description here

Technology Stack

  1. Spring boot 2.7.5
  2. Java 17
  3. Maven 3.6.1
  4. Tomcat 9.0.69
Rohit Agarwal
  • 763
  • 2
  • 5
  • 10
  • I cleaned the project then build the war file, but still got the same 404 error `The requested resource [/hello-world-app/] is not available`. I didn't make any changes and also used maven, but looking at the exploded folder in tomcat, there are only META-INF and WEB-INF – Elly Nov 21 '22 at 17:33
  • Did you follow all the above steps correctly? – Rohit Agarwal Nov 21 '22 at 18:56
  • Not exactly the same, step 2 gives error ` Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project hello-world-app: Fatal error compiling: error: invalid target release: 17 -> [Help 1]` so I built a war using IDE maven plugins. I'm not sure if that will make any difference – Elly Nov 21 '22 at 19:33
  • ok, that error is coming because JDK17 is not configured in your system. Either configure JDK17 or update the java version in tag in pom.xml and try again. – Rohit Agarwal Nov 22 '22 at 18:19
  • Request you to please follow all the steps mentioned above and let me know if you are facing issues. – Rohit Agarwal Nov 22 '22 at 18:22
  • Oh now I can run step 2 without any issues, but the Tomcat still shows 404. There is no changes to your code (aside from changing JDK 17 to JDK 11). – Elly Nov 22 '22 at 22:02
  • Ok as per catalina.out logs mentioned in question. The error is very clear port number 8080 is in use. So please use different port number or find out which process using port 8080 and kill it. Then try again – Rohit Agarwal Nov 23 '22 at 04:08
  • @Elly - any luck? – Rohit Agarwal Nov 23 '22 at 18:50
  • Still no luck. My Tomcat runs on port 8080 and I can see the Tomcat Web Application Manager page. I tested this sample https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/ and can view it. I wonder if it's problems with the packaging configuration or IntelliJ does something with the build? – Elly Nov 23 '22 at 19:02
  • No there is no issue in packaging. Can you please remove every thing from webapps folder and only keep war file present inside target folder and start the tomcat – Rohit Agarwal Nov 23 '22 at 19:09
  • Shall I remove ROOT and other default folders too? – Elly Nov 23 '22 at 19:55
  • Yes please remove all folders – Rohit Agarwal Nov 24 '22 at 03:54