Мне удалось развернуть и протестировать локальную версию моего загрузочного RESTful-приложения Java Spring локально *, используя предоставленное руководство здесь .Используя команду mvn appengine: run , мне удается без проблем получить доступ к REST API (например, через: http://localhost:8080/setiaalam/amenities). Протестировано и браузер, и Почтальон.
Затем, как только яразвернул его в GCLOUD, он всегда возвращает 404. Я подумал, что, вероятно, для создания сервера требуется некоторое время, чтобы обновить сервер, поэтому даже через несколько минут или часов он все равно 404. Журнал не дает ничего полезного, кроме файла, не найденного 404Команда, которую я использовал для развертывания: mvn appengine: deploy .
Если это имеет отношение к настройке, такой как pom.xml или appengine-web.xml, чего я не делаюдумаю, так как запуск localhost с помощью команды mvn appengine: run не имеет никаких проблем.
У кого-нибудь есть идеи, что может быть причиной? Опять же, я хочу подчеркнуть, что, это проблема при доступе к RESTful API, а не к сервлету.
ОБНОВЛЕНИЕ часть 2
Добавлены application.properties
# Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
# This is for connecting between Google App Engine Standard in the Cloud with Google Cloud SQL
#spring.datasource.url = jdbc:mysql://google/setiaalam?cloudSqlInstance=sa-community-1545365567756:asia-southeast1:setiaalam&socketFactory=com.google.cloud.sql.mysql.SocketFactory&user=root&password=setiaalam99?useSSL=false&autoReconnect=true&failOverReadOnly=false&maxReconnects=10
spring.cloud.gcp.sql.instance-connection-name=sa-community-1545365567756:asia-southeast1:setiaalam
spring.cloud.gcp.sql.database-name=setiaalam
#spring.datasource.url = jdbc:mysql://35.240.140.154:3306/setiaalam?useSSL=false&autoReconnect=true&failOverReadOnly=false&maxReconnects=10
spring.datasource.username = root
spring.datasource.password = mypwd
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
# Hibernate Properties
# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update
# sa-community-1545365567756:asia-southeast1:setiaalam
И следующая ошибка:
Driver com.mysql.jdbc.Driver claims to not accept jdbcUrl, jdbc:google:mysql://sa-community-1545365567756:asia-southeast1:setiaalam/setiaalam
ОБНОВЛЕНИЕ часть 1
Добавлен appengine-web.xml (находится в src / main / webapp / WEB-INF /)
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<threadsafe>true</threadsafe>
<runtime>java8</runtime>
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/classes/logging.properties"/>
</system-properties>
</appengine-web-app>
Файл web.xml (находится в src / main / webapp / WEB-INF /)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>Servlet 3.0 Web Application</display-name>
</web-app>
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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.venturearkstudio</groupId>
<artifactId>setia-alam-community</artifactId>
<version>0.0.2</version>
<packaging>war</packaging>
<name>setia-alam-community</name>
<description>description for this said project</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- NEEDED FOR GOOGLE APP ENGINE TOMCAT EXCLUSION-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>compile</scope>
</dependency>
<!-- NEEDED FOR GOOGLE CLOUD SQL -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>
<!-- NEEDED FOR GOOGLE APP ENGINE JAVAX.SERVLET-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- NEEDED FOR GOOGLE APP ENGINE SCOPE TEST-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- NEEDED FOR GOOGLE APP ENGINE JETTY LOGGING -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<scope>provided</scope>
</dependency>
<!-- NEEDED FOR HIBERNATE -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<!-- The following is needed to be excluded due to Google Cloud needs. -->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- NEEDED FOR GOOGLE SERVICES -->
<dependency>
<groupId>com.google.maps</groupId>
<artifactId>google-maps-services</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- NEEDED FOR GOOGLE APP ENGINE MAVEN PLUGIN -->
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>1.3.1</version>
<configuration>
<cloudSdkPath>C:/Program Files (x86)/Google/Cloud SDK/google-cloud-sdk</cloudSdkPath>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
Файл app.yaml, созданный из развернутых файлов (Stackdriver Debug):
runtime: java8
inbound_services:
- warmup
derived_file_type:
- java_precompiled
threadsafe: True
auto_id_policy: default
api_version: 'none'
handlers:
- url: (/.*)
static_files: __static__\1
upload: __NOT_USED__
require_matching_file: True
login: optional
secure: optional
- url: /
script: unused
login: optional
secure: optional
- url: /.*/
script: unused
login: optional
secure: optional
- url: /_ah/.*
script: unused
login: optional
secure: optional