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ção
Endpoints Frameworks versão 1.0web.xml:Após a migração
Frameworks 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:
        
 Saiba mais sobre os frameworks de pontos finais do Maven objetivos do plug-in.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ção
Endpoints Frameworks versão 1.0web.xml:Após a migração
Frameworks 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:
        
 Saiba mais sobre as tarefas do plugin Gradle Endpoints Frameworksgradle 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:
    
Maven
Gradle
 - 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.