Приложение Spring World MVC Hello World выдает 404 ошибки на эластичном бобовом стебле AWS, который работает, как и ожидалось, локально - PullRequest
1 голос
/ 13 октября 2019

Приложение отлично работает локально в моей IDE (IntelliJ Community Edition). Я могу запустить приложение, зайти в свой браузер, набрать localhost:8080, и он показывает «Hello World»

. В AWS я зашел в раздел «Конфигурация программного обеспечения» и добавил переменную среды SERVER_PORT и установилдо 8080.

Я полагаю, что выбрал Tomcat, когда меня спросили, какой тип конфигурации beanstalk я хотел.

Вот мой 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.9.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.lizardgizzards</groupId>
    <artifactId>langsite</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>langsite</name>
    <description>Demo project for Spring Boot</description>

    <packaging>war</packaging>

    <properties>
        <java.version>11</java.version>
        <start-class>com.lizardgizzards.langsite.LangsiteApplication</start-class>
    </properties>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Я нашел этот ответ и следовал там указаниям, так что теперь мой основной класс выглядит следующим образом:

package com.lizardgizzards.langsite;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class LangsiteApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(LangsiteApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(LangsiteApplication.class, args);
    }
}

Я бы вставил журналы, но это превышает ограничение на количество символов для переполнения стека. Я сделал ctrl+f в выводе журнала и искал «error», «серьезно» и «фатально» и не увидел результатов.

Есть несколько предупреждений, таких как:

[Sun Oct 13 18:26:14.321734 2019] [ssl:warn] [pid 3396:tid 139962572781632] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]

OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=64m; support was removed in 8.0

[Sun Oct 13 18:41:58.389785 2019] [proxy:warn] [pid 4934:tid 140166163138304] [client 178.73.215.171:54277] AH01092: no HTTP 0.9 request (with no host line) on incoming request and preserve host set forcing hostname to be ip-172-31-18-139.us-west-1.compute.internal for uri /

13-Oct-2019 18:36:07.679 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]

При создании файла войны я использую следующую команду maven:mvn clean install spring-boot:repackage

1 Ответ

1 голос
/ 14 октября 2019

Смешно ... но вот что это исправило:

Я изменил версию Java, чтобы она соответствовала версии Java на AWS:

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