Создание конечных точек Google Cloud для клиента Java

Не так много написано об использовании конечных точек Google Cloud из Java-клиента. Есть намеки на то, что это можно сделать в различных документах, но очень мало об этом написано. Я смог заставить его работать, но есть несколько вопросов.

Первый вопрос: есть ли документация или пример о том, как использовать Google Cloud Endpoint из клиента Java?

Я использую GPE для создания клиентской библиотеки конечных точек. Результатом является создание каталога endpoint-libs с кучей вещей. В документации сказано: "Сгенерированную библиотеку для конкретной службы можно найти в каталоге верхнего уровня zip-файла: google-api-services-mayapp-v1-rev20140417180959-1.16.0-rc.jar". В моей версии GPE (3.5.1) такой файл JAR не создан.

В этом видео примера tic-tac-toe (перейдите к отметке 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? Что не подойдет?

1 ответ

(OP: см. "Без Maven" ниже, так как вы говорите, что не используете Maven)

С мавеном

Проект My 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, похоже, использует один из механизмов, на которые указал alex@, endpoints.sh ( документы). Когда я запускаю "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]

Я предполагаю, что это список аргументов, которые он передает 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
Другие вопросы по тегам