Простой Gradle проект с плагином Tomcat не работает - PullRequest
1 голос
/ 08 апреля 2019

У меня следующая проблема - я создал простой проект Gradle с именем «spring» с плагином com.bmuschko.tomcat. Но когда я запускаю Gradle build и tomcatRun задач и ввожу http://localhost:8080/spring,, я получаю 404 ошибку. Конечно, я не получаю сообщений об ошибках во время сборки и запуска сервера. Есть build.gradle:

apply plugin: 'com.bmuschko.tomcat'
apply plugin: 'java'
apply plugin: 'war'

group 'training'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'

    def tomcatVersion = '9.0.17'
    tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
            "org.apache.tomcat.embed:tomcat-embed-logging-juli:9.0.0.M6",
            "org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}"
}

tomcat {
    httpProtocol = 'org.apache.coyote.http11.Http11Nio2Protocol'
    ajpProtocol  = 'org.apache.coyote.ajp.AjpNio2Protocol'
}

buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'com.bmuschko:gradle-tomcat-plugin:2.5'
    }
}

У меня также есть один jsp-файл с именем hello.jsp, вставленный в src/main/webapp:

<!DOCTYPE html>
<html>
<head>

<meta charset="UTF-8">

<title>Hello Gradle Web App</title>
</head>
<body>

<jsp:useBean id="greeting" class="test.Test"/>

<h3>${greeting.hello}</h3>

</body>
</html>
Файл

и Test.java помещен в src/main/java/test:

package test;

public class Test {
    public String getHello() {
        return "Hello Spring!";
    }
}

Как видите, сервер, кажется, успешно запускается:

17:46:12: Executing tasks 'build tomcatRun'...

> Task :compileJava UP-TO-DATE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :war UP-TO-DATE
> Task :assemble UP-TO-DATE
> Task :compileTestJava NO-SOURCE
> Task :processTestResources NO-SOURCE
> Task :testClasses UP-TO-DATE
> Task :test NO-SOURCE
> Task :check UP-TO-DATE
> Task :build UP-TO-DATE
> Task :tomcatRun
Started Tomcat Server
The Server is running at http://localhost:8080/spring

1 Ответ

1 голос
/ 09 апреля 2019

Как указано в комментариях, ваш JSP-файл имеет имя hello.jsp.

В документации Tomcat (conf/web.xml) говорится следующее:

==================== Список файлов приветствия по умолчанию ===================== *======

При запросеURI ссылается на каталог, сервлет по умолчанию ищет «файл приветствия» в этом каталоге и, если он присутствует, соответствующий ресурсный URI для отображения.Если файлы приветствия отсутствуют, сервлет по умолчанию либо обслуживает листинг каталога (см. «Конфигурация сервлета по умолчанию» о том, как настроить), либо возвращает статус 404, в зависимости от значения параметра листингов.

Файлы приветствия по умолчанию:

  • index.html
  • index.htm и
  • index.jsp

Так что это значит?

Когда вы указываете браузеру на http://localhost:8080/spring,, в URL-адресе запроса нет конкретной страницы.Tomcat, как и другие веб-серверы, все еще пытается доставить страницу, чтобы браузер мог что-то отобразить.По умолчанию, если ни одна страница не указана в URL-адресе, доставляется домашняя страница по умолчанию.Поскольку ваш файл называется hello.jsp, он не считается файлом приветствия, поэтому Tomcat выдает ошибку 404.

Вы можете решить эту проблему с помощью

  • Указав свой браузер на http://localhost:8080/spring/hello.jsp
  • Переименование hello.jsp в index.jsp
  • Настройка welcome-file-list в вашем web.xml для включения hello.jsp

При этом,проблема не в плагине com.bmuschko.tomcat и не в файле сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...