在 AppEngine 上使用 google 个云端点
Using google cloud endpoints on AppEngine
我通常在 AppEngine (Java) 上使用 Google Cloud Endpoints,如中所述:
https://cloud.google.com/appengine/docs/java/endpoints/helloendpoints-java-maven
我使用的端点库的依赖是:
<plugin>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-endpoints</artifactId>
<version>1.9.48</version>
</plugin>
使用这个,我可以使用以下命令启动本地开发服务器:
mvn clean package appengine:devserver
但是,似乎有新版本的云端点。
https://cloud.google.com/endpoints/docs/frameworks/java/quickstart-frameworks-java。
新框架在这里找到
<dependency>
<groupId>com.google.endpoints</groupId>
<artifactId>endpoints-framework</artifactId>
<version>${endpoints.framework.version}</version>
</dependency>
相同的 maven 命令在这里不起作用。我无法启动本地开发服务器、打开 API 资源管理器或使用本地数据存储(所有这些都可以在之前实现)。有人可以指导我如何使用新框架吗?
此外,以前的框架可能会被弃用吗?
部分回答我自己的问题:
我终于可以让 "Echo application"(在 https://cloud.google.com/endpoints/docs/frameworks/java/quickstart-frameworks-java 中提到)工作
但我必须做出 2 处更改:
a) 注释掉 appengine-web.xml 中的块。即,
<!--
<basic-scaling>
<max-instances>2</max-instances>
</basic-scaling>
-->
这样做之后,我得到了一个不同的错误,"failed endpoints-api-configuration: com.google.api.config.ServiceConfigException: Failed to fetch default config version for service"
要解决这个问题:
b) 注释掉 web.xml 中的 ServiceManagementConfigFilter,即
<!--
<filter>
<filter-name>endpoints-api-configuration</filter-name>
<filter-class>com.google.api.control.ServiceManagementConfigFilter</filter-class>
</filter>
-->
<!--
<filter-mapping>
<filter-name>endpoints-api-configuration</filter-name>
<servlet-name>EndpointsServlet</servlet-name>
</filter-mapping>
-->
在此之后,
构建:mvn clean package
到 运行 本地:appengine-java-sdk/1.9.44/appengine-java-sdk/appengine-java-sdk-1.9.44/bin/dev_appserver.sh /path/to/war/directory
如果有人能更多地阐明这些变化的含义,以及我们如何让它开箱即用,那就太好了
您 运行 遇到了一些问题,这些东西对配置问题过于敏感:
要解决问题,请按照以下说明进行操作:https://cloud.google.com/endpoints/docs/frameworks/java/quickstart-frameworks-java
- 替换 pom.xml 中的 YOUR_PROJECT_ID 时使用正确的 Google 项目 ID。它必须是有效的项目 ID 才能使所有步骤正常工作。
- 替换 echo.java
中的 YOUR-PROJECT-ID 时相同
如果项目 ID 无效(实际上存在于 AppEngine 中),则后续步骤将无效
- 执行:
mvn exec:java -DGetSwaggerDoc
- 执行:
gcloud service-management deploy openapi.json
- 执行:
export ENDPOINTS_SERVICE_NAME=echo-api.endpoints.<your project id>.cloud.goog
快速入门指南对第 5 步帮助不大。第 4 步需要以成功消息结束。
最后,该示例附带了一个 Maven 插件,该插件似乎不适用于新的端点。
而不是使用:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>${appengine.maven.plugin.version}</version>
</plugin>
使用:
<plugin>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>1.9.44</version>
</plugin>
为什么 mvn appengine:devserver 不起作用这个问题的答案是新插件中不存在 devserver 目标。
旧的 Maven 插件允许您执行:mvn appengine:devserver
我通常在 AppEngine (Java) 上使用 Google Cloud Endpoints,如中所述:
https://cloud.google.com/appengine/docs/java/endpoints/helloendpoints-java-maven
我使用的端点库的依赖是:
<plugin>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-endpoints</artifactId>
<version>1.9.48</version>
</plugin>
使用这个,我可以使用以下命令启动本地开发服务器: mvn clean package appengine:devserver
但是,似乎有新版本的云端点。 https://cloud.google.com/endpoints/docs/frameworks/java/quickstart-frameworks-java。
新框架在这里找到
<dependency>
<groupId>com.google.endpoints</groupId>
<artifactId>endpoints-framework</artifactId>
<version>${endpoints.framework.version}</version>
</dependency>
相同的 maven 命令在这里不起作用。我无法启动本地开发服务器、打开 API 资源管理器或使用本地数据存储(所有这些都可以在之前实现)。有人可以指导我如何使用新框架吗?
此外,以前的框架可能会被弃用吗?
部分回答我自己的问题: 我终于可以让 "Echo application"(在 https://cloud.google.com/endpoints/docs/frameworks/java/quickstart-frameworks-java 中提到)工作
但我必须做出 2 处更改: a) 注释掉 appengine-web.xml 中的块。即,
<!--
<basic-scaling>
<max-instances>2</max-instances>
</basic-scaling>
-->
这样做之后,我得到了一个不同的错误,"failed endpoints-api-configuration: com.google.api.config.ServiceConfigException: Failed to fetch default config version for service" 要解决这个问题:
b) 注释掉 web.xml 中的 ServiceManagementConfigFilter,即
<!--
<filter>
<filter-name>endpoints-api-configuration</filter-name>
<filter-class>com.google.api.control.ServiceManagementConfigFilter</filter-class>
</filter>
-->
<!--
<filter-mapping>
<filter-name>endpoints-api-configuration</filter-name>
<servlet-name>EndpointsServlet</servlet-name>
</filter-mapping>
-->
在此之后,
构建:mvn clean package
到 运行 本地:appengine-java-sdk/1.9.44/appengine-java-sdk/appengine-java-sdk-1.9.44/bin/dev_appserver.sh /path/to/war/directory
如果有人能更多地阐明这些变化的含义,以及我们如何让它开箱即用,那就太好了
您 运行 遇到了一些问题,这些东西对配置问题过于敏感:
要解决问题,请按照以下说明进行操作:https://cloud.google.com/endpoints/docs/frameworks/java/quickstart-frameworks-java
- 替换 pom.xml 中的 YOUR_PROJECT_ID 时使用正确的 Google 项目 ID。它必须是有效的项目 ID 才能使所有步骤正常工作。
- 替换 echo.java 中的 YOUR-PROJECT-ID 时相同
如果项目 ID 无效(实际上存在于 AppEngine 中),则后续步骤将无效
- 执行:
mvn exec:java -DGetSwaggerDoc
- 执行:
gcloud service-management deploy openapi.json
- 执行:
export ENDPOINTS_SERVICE_NAME=echo-api.endpoints.<your project id>.cloud.goog
快速入门指南对第 5 步帮助不大。第 4 步需要以成功消息结束。
最后,该示例附带了一个 Maven 插件,该插件似乎不适用于新的端点。 而不是使用:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>${appengine.maven.plugin.version}</version>
</plugin>
使用:
<plugin>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>1.9.44</version>
</plugin>
为什么 mvn appengine:devserver 不起作用这个问题的答案是新插件中不存在 devserver 目标。 旧的 Maven 插件允许您执行:mvn appengine:devserver