简体   繁体   English

在AppEngine上使用谷歌云端点

[英]Using google cloud endpoints on AppEngine

I normally use Google Cloud Endpoints on the AppEngine (Java) , as described in : 我通常在AppEngine(Java)上使用Google Cloud Endpoints,如下所述:

https://cloud.google.com/appengine/docs/java/endpoints/helloendpoints-java-maven https://cloud.google.com/appengine/docs/java/endpoints/helloendpoints-java-maven

The dependency for the endpoints library I use is : 我使用的端点库的依赖关系是:

<plugin>
   <groupId>com.google.appengine</groupId>
   <artifactId>appengine-endpoints</artifactId>
   <version>1.9.48</version>
</plugin>

Using this, I can start a local development server using the command: mvn clean package appengine:devserver 使用此命令,我可以使用以下命令启动本地开发服务器:mvn clean package appengine:devserver

However, there seems to be a new version of cloud endpoints. 但是,似乎有一个新版本的云端点。 https://cloud.google.com/endpoints/docs/frameworks/java/quickstart-frameworks-java . https://cloud.google.com/endpoints/docs/frameworks/java/quickstart-frameworks-java

The new framework is found here 新框架可在此处找到

<dependency>
<groupId>com.google.endpoints</groupId>
<artifactId>endpoints-framework</artifactId>
<version>${endpoints.framework.version}</version>
</dependency>

The same maven commands do not work here. 相同的maven命令在这里不起作用。 I am unable to start a local dev server, open the API explorer or use a local datastore (all of which was possible earlier) . 我无法启动本地开发服务器,打开API资源管理器或使用本地数据存储区(所有这些都可能更早)。 Could someone please guide me on how to work with the new framework. 有人可以指导我如何使用新框架。

Also, is the former framework likely to be deprecated ? 此外,前框架是否可能被弃用?

To answer my own question partially : I could finally get the "Echo application" (mentioned in https://cloud.google.com/endpoints/docs/frameworks/java/quickstart-frameworks-java ) to work 部分回答我自己的问题:我终于可以使用“Echo应用程序”(在https://cloud.google.com/endpoints/docs/frameworks/java/quickstart-frameworks-java中提到)来工作

But I had to make 2 changes: a) Comment out the block in appengine-web.xml . 但我必须进行2次更改:a)在appengine-web.xml中注释掉该块。 ie,

<!--
<basic-scaling>
  <max-instances>2</max-instances>
</basic-scaling>
-->

After doing this, I got a different error, "failed endpoints-api-configuration: com.google.api.config.ServiceConfigException: Failed to fetch default config version for service" To get around this : 执行此操作后,我得到了一个不同的错误,“失败的端点-api-configuration:com.google.api.config.ServiceConfigException:无法获取服务的默认配置版本”为了解决这个问题:

b) Comment out the ServiceManagementConfigFilter from web.xml , ie, 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>
-->

After this, 在这之后,

  1. To build : mvn clean package 要构建:mvn clean包

  2. To run locally : appengine-java-sdk/1.9.44/appengine-java-sdk/appengine-java-sdk-1.9.44/bin/dev_appserver.sh /path/to/war/directory 在本地运行:appengine-java-sdk / 1.9.44 / appengine-java-sdk / appengine-java-sdk-1.9.44 / bin / dev_appserver.sh / path / to / war / directory

It would be great if someone could shed more light on implication of these changes, and on how we could get it to work out of the box 如果有人能够更清楚地了解这些变化的含义,以及我们如何让它开箱即用,那将会很棒

There are a few problems you are running into and this stuff is overly sensitive to configuration issues: 您遇到了一些问题,这些问题对配置问题过于敏感:

To solve the problems follow the instructions in: https://cloud.google.com/endpoints/docs/frameworks/java/quickstart-frameworks-java 要解决问题,请按照以下说明操作: https//cloud.google.com/endpoints/docs/frameworks/java/quickstart-frameworks-java

  1. Use the correct Google project id when you replace the YOUR_PROJECT_ID in pom.xml. 替换pom.xml中的YOUR_PROJECT_ID时,请使用正确的Google项目ID。 It needs to be a valid project id for all the steps to work. 它必须是所有步骤的有效项目ID。
  2. Same when replacing the YOUR-PROJECT-ID in echo.java 替换echo.java中的YOUR-PROJECT-ID时相同

If the project id is not valid (actually exists in AppEngine) the next steps won't work 如果项目ID无效(实际存在于AppEngine中),则后续步骤将不起作用

  1. execute: mvn exec:java -DGetSwaggerDoc 执行: mvn exec:java -DGetSwaggerDoc
  2. execute: gcloud service-management deploy openapi.json 执行: gcloud service-management deploy openapi.json
  3. execute: export ENDPOINTS_SERVICE_NAME=echo-api.endpoints.<your project id>.cloud.goog 执行: export ENDPOINTS_SERVICE_NAME=echo-api.endpoints.<your project id>.cloud.goog

The quickstart guide is not very helpful for step 5. Step 4 needs to end with a success message. 快速入门指南对步骤5没有多大帮助。步骤4需要以成功消息结束。

Finally the sample comes with a Maven plugin that does not seem to work with the new Endpoints. 最后,该示例附带了一个Maven插件,该插件似乎不适用于新的端点。 Instead of using: 而不是使用:

    <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>${appengine.maven.plugin.version}</version>
    </plugin>

use: 使用:

    <plugin>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>1.9.44</version>
    </plugin>

The answer to the question why mvn appengine:devserver doesn't work is that the devserver target doesn't exist in the new plugin. mvn appengine:devserver无效的问题的答案是devserver目标在新插件中不存在。 The old Maven plugin allows you to execute: mvn appengine:devserver 旧的Maven插件允许您执行:mvn appengine:devserver

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

相关问题 Google Appengine端点的Cron工作 - Cron job for Google Appengine Endpoints 在Google协作平台架构中使用Google Cloud Endpoints与Cloud SQL和Cloud DataStore - Using Google Cloud Endpoints with Cloud SQL and Cloud DataStore in a polygot architecture 用于Google Cloud Endpoints Framework V2的AppEngine本地开发服务器不起作用 - AppEngine local dev server for Google Cloud Endpoints Framework V2 not work 是否可以使用appengine模块和云终端? - Is it possible to use appengine modules and and cloud endpoints? Google Appengine 云存储 - Google Appengine Cloud Storage 使用Google Cloud Endpoints的“会话” - “Sessions” with Google Cloud Endpoints Google Cloud Endpoints EOFException - Google Cloud Endpoints EOFException 当在列表中映射POJO时,为什么Cloud Endpoints会抛出com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException? - Why is Cloud Endpoints throwing com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException while mapping POJOs in a List? 本地Google Cloud Appengine无法启动 - Local Google Cloud Appengine not starting 使用Maven自动为Google Cloud Endpoints应用生成OpenApi规范 - Automatically generate OpenApi specification for Google Cloud Endpoints app using Maven
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM