我知道,这里有很多这样的问题和答案,但是没有一个对我有帮助。我尝试在AWS Elastic Beanstalk上安装我的简单Spring Boot应用程序。有一个限制:它必须使用.jsp
个模板,所以它是.war
,而不是.jar
。如果我在Elastic Beanstalk上使用预定义的Tomcat env,则一切正常,但我的目标是使用Java env。
当我安装我的应用程序时,其状态为Degraded
,当尝试访问该URL时,我的身份变为502。
在本地,一切正常。
我将application.properties
中的端口更改为5000,但这没有帮助。我发现了一项建议,为TCP Port 5000 "0.0.0.0/32"
使用入站安全规则,但这并没有帮助。
这是我的pom.xml
依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.6.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
application.properties:
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
server.port=5000
主要Java类:
@SpringBootApplication
public class DemowebApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemowebApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(DemowebApplication.class, args);
}
}
AWS错误日志:
2019/05/07 21:04:45 [error] 7827#0: *19 connect() failed (111: Connection refused) while connecting to upstream, client: 91.232.158.8, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5000/", host: "my-endpoint-tst.us-east-2.elasticbeanstalk.com"
2019/05/07 21:04:46 [error] 7827#0: *19 connect() failed (111: Connection refused) while connecting to upstream, client: 91.232.158.8, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:5000/favicon.ico", host: "my-endpoint-tst.us-east-2.elasticbeanstalk.com", referrer: "my-endpoint-tst.us-east-2.elasticbeanstalk.com/"
我怀疑问题出在我的Tomcat配置上,但是我对它的所有实验都没有帮助。
答案 0 :(得分:0)
我对此也有类似的问题。我会将JAR加载到Elastic Beanstalk中,当我尝试访问URL时,会出现状态降级的502 Apache错误。在本地,我设置为端口8080,但是当我尝试通过URL访问它时,却得到502。我的问题是:
1)导出时,我没有从IDE中导出并上传fat .JAR文件。我知道您说过您不能使用.JAR,但是只需确保在导出项目时,还使用它从Maven中导出了所有依赖项。
2)这可能比该答案的第一部分有更大的帮助,但是即使我将端口放入application.properties中,它也没有传递到Elastic Beanstalk实例。我最终成功解决此问题的方法是进入AWS的管理控制台,转到Beanstalk实例,然后转到“配置”选项卡。
在“配置”选项卡上,有一个“软件”部分,在该子部分中,转到“环境属性”。在环境属性的“名称”部分中,输入SERVER_PORT
,对于值部分,输入5000
。单击“应用”,然后让实例重新启动。