繁体   English   中英

Google App Engine Spring Boot 出现 404 错误

[英]Google App Engine Spring Boot gives a 404 error

将 Spring Boot 应用程序部署到 Google App Engine 时,我在尝试访问 Web 应用程序时收到 404 错误。 该应用程序在本地运行良好,但拒绝在应用程序引擎上运行。 我使用命令mvn package appengine:deploy -Dapp.deploy.projectId=pollog部署应用程序。

以下是应用部署后的日志:

2021-09-04 08:49:00 default[1]  2021-09-04 08:49:00.629  INFO 10 --- [           main] samuelb.capripol.CapripolApplication     : Starting CapripolApplication v0.0.1-SNAPSHOT using Java 11.0.11 on localhost with PID 10 (/workspace/capripol-0.0.1-SNAPSHOT.jar started by www-data in /workspace)
2021-09-04 08:49:00 default[1]  2021-09-04 08:49:00.635  INFO 10 --- [           main] samuelb.capripol.CapripolApplication     : The following profiles are active: mysql
2021-09-04 08:49:02 default[1]  2021-09-04 08:49:02.204  INFO 10 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2021-09-04 08:49:02 default[1]  2021-09-04 08:49:02.358  INFO 10 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 140 ms. Found 9 JPA repository interfaces.
2021-09-04 08:49:03 default[1]  2021-09-04 08:49:03.259  INFO 10 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2021-09-04 08:49:03 default[1]  2021-09-04 08:49:03.275  INFO 10 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-09-04 08:49:03 default[1]  2021-09-04 08:49:03.275  INFO 10 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.46]
2021-09-04 08:49:03 default[1]  2021-09-04 08:49:03.898  INFO 10 --- [           main] org.apache.jasper.servlet.TldScanner     : At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
2021-09-04 08:49:04 default[1]  2021-09-04 08:49:04.190  INFO 10 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-09-04 08:49:04 default[1]  2021-09-04 08:49:04.190  INFO 10 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3475 ms
2021-09-04 08:49:04 default[1]  2021-09-04 08:49:04.561  WARN 10 --- [           main] o.s.h.c.j.Jackson2ObjectMapperBuilder    : For Jackson Kotlin classes support please add "com.fasterxml.jackson.module:jackson-module-kotlin" to the classpath
2021-09-04 08:49:04 default[1]  2021-09-04 08:49:04.663  INFO 10 --- [           main] o.s.c.g.a.s.GcpCloudSqlAutoConfiguration : Default MYSQL JdbcUrl provider. Connecting to jdbc:mysql://google/pollog?cloudSqlInstance=pollog:australia-southeast1:prod-instance&socketFactory=com.google.cloud.sql.mysql.SocketFactory&useSSL=false with driver com.mysql.jdbc.Driver
2021-09-04 08:49:04 default[1]  2021-09-04 08:49:04.677  WARN 10 --- [           main] o.s.c.g.a.s.GcpCloudSqlAutoConfiguration : spring.datasource.username is not specified. Setting default username.
2021-09-04 08:49:04 default[1]  Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
2021-09-04 08:49:04 default[1]  2021-09-04 08:49:04.877  INFO 10 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2021-09-04 08:49:04 default[1]  2021-09-04 08:49:04.995  INFO 10 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 5.4.31.Final
2021-09-04 08:49:05 default[1]  2021-09-04 08:49:05.246  INFO 10 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
2021-09-04 08:49:05 default[1]  2021-09-04 08:49:05.426  INFO 10 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2021-09-04 08:49:05 default[1]  2021-09-04 08:49:05.432  WARN 10 --- [           main] com.zaxxer.hikari.util.DriverDataSource  : Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.
2021-09-04 08:49:05 default[1]  2021-09-04 08:49:05.576  INFO 10 --- [           main] c.google.cloud.sql.mysql.SocketFactory   : Connecting to Cloud SQL instance [pollog:australia-southeast1:prod-instance].
2021-09-04 08:49:05 default[1]  2021-09-04 08:49:05.576  INFO 10 --- [           main] c.google.cloud.sql.mysql.SocketFactory   : Using GAE Unix Sockets
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.660  INFO 10 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.716  INFO 10 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL57Dialect
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.762  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Connecting to Cloud SQL instance [pollog:australia-southeast1:prod-instance].
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.763  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Using GAE Unix Sockets
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.791  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Connecting to Cloud SQL instance [pollog:australia-southeast1:prod-instance].
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.791  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Using GAE Unix Sockets
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.812  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Connecting to Cloud SQL instance [pollog:australia-southeast1:prod-instance].
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.812  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Using GAE Unix Sockets
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.840  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Connecting to Cloud SQL instance [pollog:australia-southeast1:prod-instance].
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.840  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Using GAE Unix Sockets
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.859  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Connecting to Cloud SQL instance [pollog:australia-southeast1:prod-instance].
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.859  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Using GAE Unix Sockets
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.882  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Connecting to Cloud SQL instance [pollog:australia-southeast1:prod-instance].
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.882  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Using GAE Unix Sockets
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.908  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Connecting to Cloud SQL instance [pollog:australia-southeast1:prod-instance].
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.909  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Using GAE Unix Sockets
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.925  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Connecting to Cloud SQL instance [pollog:australia-southeast1:prod-instance].
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.926  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Using GAE Unix Sockets
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.943  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Connecting to Cloud SQL instance [pollog:australia-southeast1:prod-instance].
2021-09-04 08:49:06 default[1]  2021-09-04 08:49:06.944  INFO 10 --- [onnection adder] c.google.cloud.sql.mysql.SocketFactory   : Using GAE Unix Sockets
2021-09-04 08:49:08 default[1]  2021-09-04 08:49:08.151  INFO 10 --- [           main] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2021-09-04 08:49:08 default[1]  2021-09-04 08:49:08.166  INFO 10 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2021-09-04 08:49:09 default[1]  2021-09-04 08:49:09.012  WARN 10 --- [           main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2021-09-04 08:49:09 default[1]  2021-09-04 08:49:09.552  INFO 10 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Will secure Ant [pattern='/css/**'] with []
2021-09-04 08:49:09 default[1]  2021-09-04 08:49:09.553  INFO 10 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Will secure Ant [pattern='/js/**'] with []
2021-09-04 08:49:09 default[1]  2021-09-04 08:49:09.553  INFO 10 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Will secure Ant [pattern='/images/**'] with []
2021-09-04 08:49:09 default[1]  2021-09-04 08:49:09.874  INFO 10 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4cb957b8, org.springframework.security.web.context.SecurityContextPersistenceFilter@45b32dfe, org.springframework.security.web.header.HeaderWriterFilter@56846330, org.springframework.web.filter.CorsFilter@3cdc7b09, org.springframework.security.web.authentication.logout.LogoutFilter@7bdf61ad, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@4a1a256d, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@22d9ca63, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@d611f1c, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@7364eed1, org.springframework.security.web.session.SessionManagementFilter@6cfbbff7, org.springframework.security.web.access.ExceptionTranslationFilter@750a04ec, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@39dec536]
2021-09-04 08:49:10 default[1]  2021-09-04 08:49:10.173  INFO 10 --- [           main] o.s.c.g.core.DefaultCredentialsProvider  : Default credentials provider for Google Compute Engine.
2021-09-04 08:49:10 default[1]  2021-09-04 08:49:10.173  INFO 10 --- [           main] o.s.c.g.core.DefaultCredentialsProvider  : Scopes in use by default credentials: [https://www.googleapis.com/auth/pubsub, https://www.googleapis.com/auth/sqlservice.admin, https://www.googleapis.com/auth/devstorage.read_only, https://www.googleapis.com/auth/devstorage.read_write, https://www.googleapis.com/auth/trace.append, https://www.googleapis.com/auth/cloud-platform]
2021-09-04 08:49:10 default[1]  2021-09-04 08:49:10.186  INFO 10 --- [           main] o.s.c.g.a.c.GcpContextAutoConfiguration  : The default project ID is pollog
2021-09-04 08:49:10 default[1]  2021-09-04 08:49:10.372  INFO 10 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2021-09-04 08:49:10 default[1]  2021-09-04 08:49:10.383  INFO 10 --- [           main] samuelb.capripol.CapripolApplication     : Started CapripolApplication in 10.788 seconds (JVM running for 12.207)
2021-09-04 08:49:10 default[1]  2021-09-04 08:49:10.384  INFO 10 --- [           main] o.s.b.a.ApplicationAvailabilityBean      : Application availability state LivenessState changed to CORRECT
2021-09-04 08:49:10 default[1]  2021-09-04 08:49:10.387  INFO 10 --- [           main] o.s.b.a.ApplicationAvailabilityBean      : Application availability state ReadinessState changed to ACCEPTING_TRAFFIC
2021-09-04 08:49:10 default[1]  2021-09-04 08:49:10.448  INFO 10 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2021-09-04 08:49:10 default[1]  2021-09-04 08:49:10.448  INFO 10 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2021-09-04 08:49:10 default[1]  2021-09-04 08:49:10.450  INFO 10 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Completed initialization in 2 ms
2021-09-04 08:49:10 default[1]  "GET /login HTTP/1.1" 404
2021-09-04 08:49:10 default[1]  "GET /favicon.ico HTTP/1.1" 302
2021-09-04 08:49:10 default[1]  "GET /login HTTP/1.1" 404
2021-09-04 08:52:32 default[1]  2021-09-04 08:52:32.255  INFO 10 --- [extShutdownHook] o.s.b.a.ApplicationAvailabilityBean      : Application availability state ReadinessState changed from ACCEPTING_TRAFFIC to REFUSING_TRAFFIC
2021-09-04 08:52:35 default[1]  {"severity": "WARNING", "message": "App is listening on port 8080. We recommend your app listen on the port defined by the PORT environment variable to take advantage of an NGINX layer on port 8080."}\n

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.5.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>samuelB</groupId>
    <artifactId>capripol</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>Capripol</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-gcp-dependencies</artifactId>
                <version>1.0.0.RC1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-gcp-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.11.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.11.2</version>
        </dependency>
        <dependency>
            <groupId>org.modelmapper</groupId>
            <artifactId>modelmapper</artifactId>
            <version>2.3.5</version>
        </dependency>
    </dependencies>

    <repositories>
      <!-- Use Spring Milestone Repository -->
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>appengine-maven-plugin</artifactId>
                <version>2.1.0</version>
                <configuration>
                    <version>1</version>
                    <projectId>GCLOUD_CONFIG</projectId>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

应用程序属性:

spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
spring.datasource.initialization-mode=always

spring.profiles.active=mysql

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/**

应用程序-mysql.properties:

database=mysql

# Delete the rest of the original content of the file and replace with the following:
spring.cloud.gcp.sql.database-name=pollog
spring.cloud.gcp.sql.instance-connection-name=pollog:australia-southeast1:prod-instance
spring.datasource.password = password123

# Initialize the database since the newly created Cloud SQL database has no tables. The following flag is for Spring Boot 2.
spring.datasource.initialization-mode=always

主要的:

@SpringBootApplication
public class CapripolApplication extends SpringBootServletInitializer {

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

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(CapripolApplication.class);
    }

    @Configuration
    public class WebConfig implements WebMvcConfigurer {
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/**")
                    .addResourceLocations("classpath:/static/", "classpath:/images/") //tells Spring the location of resources
                    .setCachePeriod(0);
        }
    }

网络安全配置:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    private RedirectStrategy redirectStrategy = new DefaultRedirectStrategy();
    @Autowired
    DataSource dataSource;

    @Autowired
    private UserDetailsServiceImpl userDetailsService;

    @Autowired
    BCryptPasswordEncoder bCryptPasswordEncoder;

    //configuring datasource
    @Autowired
    public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {
        auth.jdbcAuthentication().dataSource(dataSource);
    }

    @Bean
    public BCryptPasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    @Bean
    public AuthenticationManager customAuthenticationManager() throws Exception {
        return authenticationManager();
    }

    //Tells Spring to 'ignore' or 'not navigate' these when trying to access files under their paths
    @Override
    public void configure(WebSecurity web) {
        web.ignoring().antMatchers("/css/**", "/js/**", "/images/**");
    }


    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder);
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .cors().and().csrf().disable()
                .authorizeRequests()
                .antMatchers("/login").permitAll() //these permit which roles can access whaich pages, i.e. any can login
                .antMatchers("/Admin").hasAnyAuthority("Admin", "Super Admin")//only admins/ superadmins can access admin page
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/login")//defines page used for logging in
                .failureUrl("/login?error")//page for failed login
                .defaultSuccessUrl("/")//page after successful login
                .permitAll()
                .and()
                .logout()
                    .permitAll()
                    .and()
                .sessionManagement()
                    .invalidSessionUrl("/login");
    }
}

应用程序.yaml:

runtime: java11
# entrypoint: java -Xmx64m -jar capripol-0.0.1-SNAPSHOT.jar
instance_class: F2

handlers:
- url: /.*
  secure: always
  redirect_http_response_code: 301
  script: auto
- url: /login
  secure: always
  redirect_http_response_code: 301
  script: auto

编辑:我尝试使用更大的实例类型 F4、F4_1G 但这没有区别。 我还添加了以下内容来抑制有关端口的警告,但这没有区别:

public static void main(String[] args) throws IOException {
        SpringApplication.run(CapripolApplication.class, args);
        int port = Integer.parseInt(System.getenv().getOrDefault("PORT", "8080"));
        HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);

        // Set root URI path.
        server.createContext("/", (t) -> {
        byte[] response = "Hello World!".getBytes();
        t.sendResponseHeaders(200, response.length);
        try (OutputStream os = t.getResponseBody()) {
            os.write(response);
        }
        });

        // Create a second URI path.
        server.createContext("/foo", (t) -> {
        byte[] response = "Foo!".getBytes();
        t.sendResponseHeaders(200, response.length);
        try (OutputStream os = t.getResponseBody()) {
            os.write(response);
        }
        });

        server.start();
    }

我也一直在尝试解决它,发现路径或路线是错误的。尝试找邮递员看看它是否有效。 pd:我发现我的参数也错了。 数据源用户名应该是在谷歌云上注册时创建的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM