生成Google Cloud Endpoints文件,服务器无法正常工作

时间:2013-06-07 12:32:19

标签: google-app-engine google-cloud-endpoints

我运行endpoints.sh get-client-lib com.my.app.FooService并成功生成Google Cloud Endpoints [1](2 .discovery个文件,1 .api个文件和1个.zip文件的文件。

该脚本不会向我的war文件夹添加任何内容,因此我假设服务器端已由web.xml@Api中配置的魔法处理注释(a'la Spring Framework)。

但是http://localhost:8080/_ah/api/explorer会将我重定向到空白的Google云端控制台。上传我的应用程序会产生相同的结果。

我错过了什么吗?我认为文档有点缺乏,它甚至没有解释生成的文件的用途。

我正在使用Google App Engine Java。

[1] https://developers.google.com/appengine/docs/java/endpoints/gen_clients

2 个答案:

答案 0 :(得分:1)

要使端点正常工作,请按照Google GAE页面中所述的步骤进行操作

  
      
  1. 首先编写API后端代码。

  2.   
  3. 注释您的API后端代码,因此可以从中生成类和客户端库。 (或者,使用Google Plugin for Eclipse,它会自动为您注释。)

  4.   
  5. 使用endpoints.sh实用程序生成客户端库。 (或者,使用Google Plugin for Eclipse生成客户端库。)

  6.   
  7. 在调用API后端时使用客户端库编写客户端应用程序。

  8.   

但上述步骤错过了一些重要步骤,Google Plugins(Google Plugin for Eclipse)将自动为您生成。

  1. 在web.xml中配置servlet。 (将 your-full-class-name 替换为您自己的班级名称)

    <servlet>
        <servlet-name>com.google.api.server.spi.SystemServiceServlet</servlet-name>
        <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
        <init-param>
            <param-name>services</param-name>
            <param-value>your-full-class-name</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>com.google.api.server.spi.SystemServiceServlet</servlet-name>
        <url-pattern>/_ah/spi/*</url-pattern>
    </servlet-mapping>
    
  2. 您需要确保将 endpoints.sh 生成的文件(.api)复制到您的网络应用根文件夹中的 WEB-INF 文件夹中。

  3. 为了更好地理解,您可以调用 endpoints.sh 来查看所有可用选项,如下所示

    Available commands:
    
    get-client-lib: Generates a client library
    usage: get-client-lib  ...
    
    Options:
     --classpath=CLASSPATH        Additional class path entries
      -cp CLASSPATH                 (default: ./war/WEB-INF/classes).
     --language=LANGUAGE          The target output programming language
      -l LANGUAGE                   (java) (default: java).
     --output=OUTPUT_DIR          The directory to store output files
      -o OUTPUT_DIR                 (default: ./).
     --war=WAR_PATH               The path to a directory or .war with a WAR
      -w WAR_PATH                   directory layout (default: ./war).
    
    gen-api-config: Generates API configuration files from service classes
    usage: gen-api-config  ...
    
    Options:
     --classpath=CLASSPATH        Additional class path entries
      -cp CLASSPATH                 (default: ./war/WEB-INF/classes).
     --output=OUTPUT_DIR          The directory to store output files
      -o OUTPUT_DIR                 (default: ./).
     --war=WAR_PATH               The path to a directory or .war with a WAR
      -w WAR_PATH                   directory layout (default: ./war).
    
    gen-discovery-doc: Generates API Discovery document
    usage: gen-discovery-doc  
    
    Options:
     --format=FORMAT              The requested API protocol type (rest|rpc)
      -f FORMAT                     (default: rest).
     --output=OUTPUT_DIR          The directory to store output files
      -o OUTPUT_DIR                 (default: ./).
    
    gen-client-lib: Generates a client library
    usage: gen-client-lib  
    
    Options:
     --language=LANGUAGE          The target output programming language
      -l LANGUAGE                   (java) (default: java).
     --output=OUTPUT_DIR          The directory to store output files
      -o OUTPUT_DIR                 (default: ./).
    
    

    然后,您可以在资源管理器UI中查看服务,如下所示。

    • 当您访问 http:// localhost:8080 / _ah / api / explorer 时,会先将其重定向到 developers.google.com 。但内容来自localhost。

    • 您始终可以依赖普通的Google APE本地开发服务器。例如,IntelliJ Google APE插件启动Google APE本地服务器也可以支持“_ah / api / explorer”访问 endpoint explore UI

答案 1 :(得分:0)

正如Dan Holevoet在评论中提到的,脚本需要从war运行。至于我的情况,我只需要将文件复制到该目录中。

相关问题