我使用示例默认项目创建了一个弹性benstalk并且工作正常,但是在我上传我的Spring Boot项目之后它不起作用,但在本地主机上工作得很好。 为了更好地检查错误,我做了一个非常简单的 Spring Boot 项目,仅具有 Web 依赖项和一个简单的端点,但尚未工作
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
我只创建这个类
package com.example.demo.Testing;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestingAWS {
@GetMapping()
public ResponseEntity<?> sayOk(){
return new ResponseEntity<>(HttpStatus.OK);
}
}
和@SpringBootApplication
package com.example.demo;
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
} }
我尝试在 application.properties 中没有配置的情况下运行:
server.port=8080
我使用发动 war
mvn clean install
在 mvn spring-boot:run
在本地主机上部署并正常工作后,端点返回状态 200
但是我在控制台中给出了这个错误
2018-04-18 16:30:55.468 INFO 19224 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-04-18 16:30:55.469 INFO 19224 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
并且此应用程序无法在 aws 上运行。错误日志:
我放了一个链接,因为它非常大,并且 stackoverflow 说我超出了字符限制
但是在健康方面说服务器没问题
但是如果尝试执行请求,我会收到此错误:
<html>
<head>
<title>502 Bad Gateway</title>
</head>
<body bgcolor="white">
<center>
<h1>502 Bad Gateway</h1>
</center>
<hr>
<center>nginx/1.12.1</center>
</body>
</html>
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
最佳答案
这个:
2018-04-18 16:30:55.468 INFO 19224 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-04-18 16:30:55.469 INFO 19224 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
不是一个错误。这意味着 Spring Boot 正在使用端点 /error
注册 Controller 。是 Spring Boot 的默认行为,如所解释的 here :
Spring Boot automatically registers a BasicErrorController bean if you don’t specify any custom implementation in the configuration.
您还可以看到日志级别为 INFO
,而不是 ERROR
。
很可能,Spring Boot 不是错误 502 Bad Gateway 的原因。导致此错误的原因有很多。我建议您创建另一个问题,重点关注您的 AWS 设置。
关于java - 简单的 Spring Boot 不适用于 aws,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49907923/