Как настроить встроенный Tomcat для запуска приложения Spring MVC?

Следуя приведенному здесь руководству: https://www.codejava.net/servers/tomcat/how-to-embed-tomcat-server-into-java-web-applications, я пытаюсь развернуть файл войны Spring в отдельном встроенном коте настроенный проект. Вот моя конфигурация Java и моя конфигурация build.gradle:

Конфигурация Java для встроенного Tomcat:

public static void main(String[] args) throws LifecycleException {
        Tomcat tomcat = new Tomcat();
        tomcat.setBaseDir("temp");
        tomcat.setPort(9000);

        String contextPath = "";
        String docBase = new File("spring.war").getAbsolutePath();

        tomcat.getHost().setAppBase(".");

        tomcat.addWebapp(contextPath, docBase);

        tomcat.start();
        tomcat.getServer().await();
}

Файл сборки Gradle:

plugins {
    id 'java'
    id 'application'
}

group 'org.example'
version '1.0-SNAPSHOT'

mainClassName = 'TomcatDriver'

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'org.apache.tomcat.embed', name: 'tomcat-embed-core', version: '9.0.37-dev'
    compile group: 'org.apache.tomcat.embed', name: 'tomcat-embed-jasper', version: '9.0.37'
    compile group: 'org.apache.tomcat', name: 'tomcat-juli', version: '9.0.37'
    compile group: 'org.apache.tomcat', name: 'tomcat-annotations-api', version: '9.0.37'
}

Когда я запускаю из Intellij Idea (Сообщество), приложение, похоже, несколько инициализируется, но при посещении указанного адреса в браузере возникает ошибка:

Этот сайт недоступен. localhost отказался подключиться. Попробуйте: проверить подключение, проверить прокси и брандмауэр ERR_CONNECTION_REFUSED

Вот журнал, который я получаю при запуске приложения с помощью Intellij Idea (Сообщество):

17:13:32: Executing task 'TomcatDriver.main()'...

> Task :compileJava
> Task :processResources NO-SOURCE
> Task :classes

> Task :TomcatDriver.main()
Jan 20, 2021 5:13:34 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service [Tomcat]
Jan 20, 2021 5:13:34 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet engine: [Apache Tomcat/9.0.37]
Jan 20, 2021 5:13:34 PM org.apache.catalina.startup.ContextConfig getDefaultWebXmlFragment
INFO: No global web.xml found
Jan 20, 2021 5:13:37 PM org.apache.jasper.servlet.TldScanner scanJars
INFO: 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.
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Jan 20, 2021 5:13:37 PM org.apache.catalina.core.ApplicationContext log
INFO: 1 Spring WebApplicationInitializers detected on classpath
Jan 20, 2021 5:13:37 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'dispatcher'
Jan 20, 2021 5:13:38 PM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [
    name: default
    ...]
Jan 20, 2021 5:13:39 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.3.7.Final}
Jan 20, 2021 5:13:39 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Jan 20, 2021 5:13:39 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.4.Final}
Jan 20, 2021 5:13:40 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
Jan 20, 2021 5:13:42 PM org.hibernate.validator.internal.util.Version <clinit>
INFO: HV000001: Hibernate Validator 6.1.7.Final

Может ли кто-нибудь предложить, что я делаю неправильно в моей конфигурации? Та же конфигурация работает для проектов, отличных от Spring, со встроенным tomcat версии 8 https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-core/8.0.48.

Встроенные банки Tomcat 8, похоже, не запускают проекты Spring. Я прочитал здесь Развертывание WAR с весенней загрузкой не удалось запустить в Tomcat что для развертывания файлов Spring war может потребоваться Tomcat 9. Вот почему я пытаюсь использовать банки Tomcat 9.

ОБНОВЛЕНИЕ

Я думаю, что этот пост решает проблему, с которой я столкнулся: Код работает с Embedded Apache Tomcat 8, но не с 9. Что изменилось?

Заранее спасибо!


person Musa Khan    schedule 20.01.2021    source источник
comment
Почему вы делаете это вместо использования Boot?   -  person chrylis -cautiouslyoptimistic-    schedule 20.01.2021
comment
Это задание от учреждения. Кстати, только что обнаружил это, и, похоже, мне это помогло: 9-whats-changed" title="code работает со встроенным apache tomcat 8, но не с 9 Whats Changed"> stackoverflow.com/questions/48998387/   -  person Musa Khan    schedule 20.01.2021