Esta página descreve a migração de uma aplicação Cloud Endpoints versão 1.0 existente para os Frameworks de Endpoints para o App Engine em Java.
Vantagens
A nova estrutura oferece várias vantagens, incluindo:
- Latência do pedido reduzida.
- Melhor integração com as funcionalidades do App Engine, como domínios personalizados.
- Apoio técnico oficial para configurações do Guice.
- Opcionalmente, novas funcionalidades de gestão de APIs.
A versão 2.0 do Endpoints Frameworks não afeta as interfaces da sua API. Os clientes existentes continuam a funcionar após a migração sem alterações ao código do lado do cliente.
Funcionalidades e ferramentas atualmente excluídas
As seguintes funcionalidades não estão disponíveis atualmente. Se precisar de alguma destas opções, envie um pedido de funcionalidade.
- Protocolo JSON-RPC, que é necessário para clientes iOS antigos. Para criar clientes iOS para a sua API do Endpoints Frameworks versão 2.0, recomendamos que use a biblioteca de cliente Objective-C das APIs Google para APIs REST.
- ETags automáticos
- Campos de tipo automáticos
- Integração de IDE
- fieldsrespostas parciais
- Criação automática do método da API PATCH
Além disso, o suporte do Android Studio para a versão 1.0 dos Endpoints não é atualmente suportado para a versão 2.0.
Migrar para a versão 2.0 dos frameworks de pontos finais
A versão 2.0 dos Endpoints Frameworks foi movida para artefactos Maven no grupo
com.google.endpoints.
O JAR obrigatório de base encontra-se no artefacto endpoints-framework. Se quiser usar a configuração do Guice, adicione o artefacto endpoints-framework-guice.
As instruções seguintes fornecem um exemplo de como migrar da versão 1.0 dos Frameworks de Endpoints para a versão 2.0 dos Frameworks de Endpoints através de um documento de descoberta:
- Transfira e inicialize a CLI do Google Cloud.
- Execute os seguintes comandos:
  - Certifique-se de que a CLI gcloud está autorizada a aceder aos seus dados e serviços em Google Cloud:
   gcloud auth login 
- Usar credenciais padrão da aplicação:
   gcloud auth application-default login 
- Instale o componente app-engine-javado SDK Google Cloud:gcloud components install app-engine-java 
- Atualize para a versão mais recente do SDK do Google Cloud e de todos os componentes:
   gcloud components update 
 
- Certifique-se de que a CLI gcloud está autorizada a aceder aos seus dados e serviços em Google Cloud:
   
Migre através do Maven ou do Gradle
Maven
- Remova a dependência antiga, que é o artefacto appengine-endpoints:
- Adicione a nova dependência do Endpoints Frameworks:
- Adicione o novo plug-in Endpoints Frameworks e defina o nome de anfitrião para um documento de descoberta gerado:
- Adicione o novo plugin do App Engine Maven:
- Atualize o ponto de entrada da API no ficheiro web.xmldo seu projeto:- Mudar o nome de todas as ocorrências de SystemServiceServletparaEndpointsServlet
- Substitua todas as ocorrências do caminho /_ah/spi/pelo novo caminho obrigatório/_ah/api/
 
 A imagem seguinte mostra o conteúdo do web.xmlantes e depois da migração:Antes da migraçãoEndpoints Frameworks versão 1.0web.xml:Após a migraçãoFrameworks de Endpoints versão 2.0web.xml:
- Mudar o nome de todas as ocorrências de 
- Depois de modificar as dependências, limpe o projeto:
        mvn clean 
- Pode gerar um documento de deteção:
        mvn endpoints-framework:discoveryDocs 
- Pode implementar um projeto:
        mvn appengine:deploy Saiba mais acerca dos objetivos do plug-in do Maven App Engine. 
Gradle
- Remova a dependência antiga, que é o artefacto appengine-endpoints:compile group: 'com.google.appengine', name: 'appengine-endpoints', version: '+' 
- Adicione a nova dependência do Endpoints Frameworks:
- Adicione os novos plug-ins do App Engine e dos Endpoints Frameworks:
- Aplique os novos plug-ins do App Engine e dos Frameworks de pontos finais:
- Defina o ponto final do nome de anfitrião para documentos de descoberta gerados:
- Atualize o ponto de entrada da API no ficheiro web.xmldo seu projeto:- Mudar o nome de todas as ocorrências de SystemServiceServletparaEndpointsServlet
- Substitua todas as ocorrências do caminho /_ah/spi/pelo novo caminho obrigatório/_ah/api/
 
 A imagem seguinte mostra o conteúdo do web.xmlantes e depois da migração:Antes da migraçãoEndpoints Frameworks versão 1.0web.xml:Após a migraçãoFrameworks de Endpoints versão 2.0web.xml:
- Mudar o nome de todas as ocorrências de 
- Depois de modificar as dependências, limpe o projeto com o seguinte comando:
        gradle clean 
- Pode gerar um documento de descoberta através de:
        gradle endpointsDiscoveryDocs 
- Pode implementar um projeto através de:
        gradle appengineDeploy Saiba mais sobre as tarefas do plugin do Gradle App Engine. 
Usar o Guice para configurar o Endpoints Frameworks para Java
Se quiser usar o Guice:
- Adicione a nova dependência do Guice do Endpoints Frameworks:
    MavenGradle
- Declare um novo módulo que se estenda a EndpointsModulee configure-o da seguinte forma:
Validar uma nova implementação
Pode verificar se a nova estrutura está a publicar tráfego:
- Envie alguns pedidos para a nova implementação.
- Na Google Cloud consola, aceda à página Registo > Explorador de registos. 
- Se os pedidos forem apresentados com caminhos que começam por - /_ah/api, significa que a versão 2.0 dos Frameworks de Endpoints está a publicar a sua API. Os registos não devem apresentar pedidos com caminhos que comecem por- /_ah/spi. Estes pedidos indicam que o proxy da versão 1.0 do Endpoints Frameworks ainda está a publicar pedidos.
Adicionar gestão da API Endpoints
A versão 2.0 do Endpoints Frameworks também lhe permite ativar funcionalidades de gestão de APIs, incluindo:
- Gestão de chaves da API
- Partilha de APIs
- Autenticação do utilizador
- Métricas da API
- Registos da API
Para começar a usar estas funcionalidades, consulte o artigo Adicionar gestão de APIs.
Resolução de problemas
Esta secção descreve comportamentos irregulares comuns ao migrar para a versão 2.0 dos Frameworks de Endpoints e as soluções sugeridas.
A API devolve erros 404, mas o Explorador de APIs continua a listar as APIs corretamente
Tem de remover a configuração antiga da versão 1.0 do Endpoints Frameworks
quando migrar para a versão 2.0 do Endpoints Frameworks. Se a configuração antiga ainda estiver presente na configuração da aplicação, o serviço Endpoints continua a tratar a app como uma app da versão 1.0. Pode ver pedidos nos registos do App Engine enviados para /_ah/spi, o que resulta em erros HTTP 404 enviados para o cliente.
- Remova as seguintes linhas do ficheiro - web.xml, se estiverem presentes:- <servlet> <servlet-name>SystemServiceServlet</servlet-name> <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class> <init-param> <param-name>services</param-name> <param-value>...</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>SystemServiceServlet</servlet-name> <url-pattern>/_ah/spi/*</url-pattern> </servlet-mapping>
- Certifique-se de que o ficheiro - web.xmlcontém o seguinte:- <servlet-mapping> <servlet-name>EndpointsServlet</servlet-name> <url-pattern>/_ah/api/*</url-pattern> </servlet-mapping>
A API está a gerar erros de reflexão
Tem de incluir apenas o artefacto endpoints-framework na sua aplicação e não o JAR appengine-endpoints antigo. Se implementar uma aplicação com ambos os JARs, pode deparar-se com erros de reflexão ou erros de tipo de tempo de execução, como NoClassDefFoundError, NoSuchMethodError e ClassCastException. Remova as seguintes linhas do ficheiro de compilação, se estiverem presentes:
Maven
Gradle
compile group: 'com.google.appengine', name: 'appengine-endpoints', version: '+'
Além disso, se alguma das suas outras dependências depender de versões mais antigas do Guava, isto também pode manifestar-se como um método TypeToken em falta. Tem de garantir
que usa o Guava v19 ou o artefacto endpoints-framework-all, que
oculta dependências.
As origens da biblioteca de cliente não são compiladas
Se vir um erro como method does not override or implement a method
from a supertype ou cannot find symbol method setBatchPath(String), é provável que a sua aplicação cliente dependa de uma versão antiga da biblioteca cliente Java da Google. Tem de garantir que o seu artefacto google-api-client é
1.23.0 ou superior.
Maven
<dependency> <groupId>com.google.api-client</groupId> <artifactId>google-api-client</artifactId> <version>1.23.0</version> </dependency>
Gradle
compile group: 'com.google.api-client', name: 'google-api-client', version: '1.23.0'
Problemas com a melhoria do Datanucleus JPA/JDO
Maven
O novo plug-in do App Engine Maven baseado na CLI do Google Cloud não suporta o melhoramento do Datanucleus de nenhum tipo. Se o seu projeto usar o suporte de melhoramento do Datanucleus JDO ou JPA do plug-in antigo, tem de configurar o plug-in Maven do Datanucleus de terceiros separadamente quando fizer a migração. Consulte o seguinte para mais informações:
Gradle
Se o seu projeto usar o melhoramento do gradle-appengine-pluginJPA/JDO
       Datanucleus, tem de configurar manualmente o melhoramento do Datanucleus
       depois de mudar para o novo plug-in do Gradle baseado na CLI gcloud.
       Veja um 
       exemplo do Stackoverflow.