1

关于从 Java 客户端使用 Google Cloud 端点的文章不多。有迹象表明它可以在各种文档中完成,但很少写。我已经能够让它工作,但有一些问题。

第一个问题:是否有一些关于如何从 Java 客户端使用 Google Cloud Endpoint 的文档或示例?

我正在使用 GPE 生成端点客户端库。输出是用一堆东西创建的端点库目录。文档说,“生成的特定于服务的库可以在 zip 文件的顶级目录中找到:google-api-services-mayapp-v1-rev20140417180959-1.16.0-rc.jar”。在我的 GPE (3.5.1) 版本中,没有创建这样的 JAR 文件。

这个井字游戏示例的视频(转到 23 分钟标记)显示了一些源文件从 endpoint-libs 目录复制到 Android 客户端应用程序中。

https://www.youtube.com/watch?v=NU_wNR_UUn4

第二个问题:关于创建上述 JAR 文件的文档是否错误?是否有关于生成的源文件以及如何使用它们的文档?也许有一些关于构建 Android 应用程序的文档,但我不了解 Android。无论如何,我筛选了一些 Android 客户端代码。

视频继续显示用于引用端点的“服务”对象。我已经修改了代码以与 Java 客户端一起使用。

MyApp.Builder builder = new MyApp.Builder( new NetHttpTransport(), new GsonFactory(), null );
service = builder.build();
Method1 method1 = service.getEndpointMethod1();
method1.execute();

Android 示例使用 AndroidHttp.newCompatibleTransport() 创建一个 HttpTransport 作为 MyApp.Builder() 的第一个参数;

第三个问题:我用于创建 HttpTransport 的方法是否适合 Java 客户端?

第四个问题:Android 客户端文档中有多少内容适用于从 Java 客户端使用端点——因为它们都是 Java 客户端?什么不适用?

4

1 回答 1

1

(OP:请参阅下面的“没有 Maven”,因为您说您没有使用 Maven)

与 Maven

我的 Cloud Endpoints 项目 pom.xml 包含插件配置:

<plugin>
  <groupId>com.google.appengine</groupId>
  <artifactId>appengine-maven-plugin</artifactId>
  <version>${appengine.version}</version>
  <configuration>
    <enableJarClasses>false</enableJarClasses>
    <version>${app.version}</version>
  </configuration>
  <executions>
    <execution>
      <goals>
        <!-- Generates the discovery document and client library
             during the compile phase. -->
        <goal>endpoints_get_discovery_doc</goal>
        <goal>endpoints_get_client_lib</goal>
      </goals>
    </execution>
  </executions>
</plugin>

请注意<goal>endpoints_get_client_lib</goal>条目,它不包含在原始骨架中,并且是这里的重要部分。

对我来说,这会生成并安装一个名为{myApiName}-v1-1.21.0-SNAPSHOT.jar. 有关我在 .jar 中看到的内容,请参阅下面的“结果”。

没有 Maven

在幕后,Maven 似乎正在使用 alex@指出的机制之一endpoints.sh文档)。当我在 Endpoints 模块上运行“mvn install”时,我看到一条消息,例如

Executing endpoints Command=[get-client-lib,
  -cp, {lots of .jar files}, -o, {path to output WEB-INF dir},
  -w, {path to generated file working dir?}, -l, java,
  -bs, maven, com.example.MyApi]

我猜这是它传递给 args 的列表endpoints.sh,尽管我没有检查过。

结果

生成的 .jar 文件如下所示,其中包含顶级客户端 MyApiName 类、一些支持类和从发现文档生成的模型类:

META-INF/MANIFEST.MF
META-INF/maven/com.example/myApiName/pom.properties
META-INF/maven/com.example/myApiName/pom.xml
com/example/myApiName/MyApi$AddBatch.class
com/example/myApiName/MyApi$Builder.class
com/example/myApiName/MyApi.class
com/example/myApiName/MyApiRequest.class
com/example/myApiName/MyApiRequestInitializer.class
com/example/myApiName/MyApiScopes.class
com/example/myApiName/model/Thing.class
com/example/myApiName/model/OtherThing.class
于 2016-01-09T00:02:14.550 回答