Spring Boot вызывает ошибку WebAppContext при развертывании в GAE - PullRequest
0 голосов
/ 28 апреля 2018

Я создаю REST API для личного проекта, использую для этого Spring Boot и внедряю в Google App Engine. Проект компилируется и запускается локально без проблем, и я могу развернуть его в GAE без ошибок сборки. Однако, когда я перехожу к своему URI после развертывания в GAE, выдается 404 со следующим сообщением:

No context on this server matched or handled this request.
Contexts known to this server are:
/ ---> o.e.j.w.WebAppContext@56ef9176{/,file:///var/lib/jetty/webapps/root/,UNAVAILABLE}{/root.war} [failed]

У меня есть и файл build.gradle, и файл pom.xml, и зависимости должны быть объявлены в обоих, что, я считаю, является проблемой.

Мой pom.xml содержит:

<dependencyManagement>
  <dependencies>
    <dependency>
      <!-- Import dependency management from Spring Boot -->
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>2.0.1.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
</dependencies>

Мой build.gradle содержит:

plugins {
  id 'org.springframework.boot' version '2.0.1.RELEASE'
}
apply plugin: 'io.spring.dependency-management'
dependencies {
  compile 'org.springframework.boot:spring-boot-starter-web'
}

Когда я удаляю обе зависимости загрузочной пружины из обеих, ошибка исчезает.

Есть идеи?

1 Ответ

0 голосов
/ 28 апреля 2018

В конце концов понял сам, но оставлю это для всех, кто сталкивается с той же ошибкой.
Как я обнаружил в документации: если вы используете WAR в качестве развертываемого (вместо .jar-файла), то вы также должны импортировать spring-boot-starter-tomcat как предоставленную зависимость.

Мой pom.xml теперь выглядит так:

<dependencyManagement>
  <dependencies>
    <dependency>
      <!-- Import dependency management from Spring Boot -->
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>2.0.1.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
  </dependency>
</dependencies>

И мой build.gradle теперь выглядит так:

plugins {
  id 'org.springframework.boot' version '2.0.1.RELEASE'
}
apply plugin: 'io.spring.dependency-management'
dependencies {
  compile 'org.springframework.boot:spring-boot-starter-web'
  providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
}
...