2016-04-09 38 views
1

我在本地Android Studio中有一個App Engine後端,並安裝了Google Cloud Messaging安裝程序。在Android Studio中爲現有App Engine後端服務器添加新端點

它原來的終點如下:

  • 消息端點
  • 註冊端點

我創建了一個新的Java文件,並增加了一個名爲UserRegistration新類,如下所示:

package com.xxxxx.gcmbackend; 
import com.google.api.server.spi.config.Api; 
import com.google.api.server.spi.config.ApiMethod; 
import com.google.api.server.spi.config.ApiNamespace; 
import com.google.api.server.spi.response.CollectionResponse; 

import java.util.List; 
import java.util.logging.Logger; 
import javax.inject.Named; 

import static com.xxxxxx.gcmbackend.OfyService.ofy; 

@Api(
     name = "register", 
     version = "v1", 
     namespace = @ApiNamespace(
       ownerDomain = "gcmbackend.xxxxx.com", 
       ownerName = "gcmbackend.xxxxx.com", 
       packagePath="" 
     ) 
) 


public class UserRegistrationEndpoint { 
    private static final Logger log = Logger.getLogger(RegistrationEndpoint.class.getName()); 
    @ApiMethod(name = "register") 
    public void registerDevice(@Named("regId") String regId, @Named("username") String username, @Named("phone") String phone) { 
     if(findRecord(regId) != null) { 
      log.info("Device " + regId + " already registered, skipping register"); 
      return; 
     } 
     RegistrationRecord record = new RegistrationRecord(); 
     record.setRegId(regId); 
     record.setUsername(username); 
     record.setPhone(phone); 
     ofy().save().entity(record).now(); 
    } 
    private RegistrationRecord findRecord(String regId) { 
     return ofy().load().type(RegistrationRecord.class).filter("regId", regId).first().now(); 
    } 
} 

但是,部署時我看不到這個端點在API瀏覽器中。如何使用Google Cloud Messaging將新工作終端添加到App Engine後端?

回答

1

通過現有的代碼結構,我發現每個新API都必須添加到web.xml文件中。我將我的新端點添加爲:

<?xml version="1.0" encoding="utf-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5"> 
    <filter> 
     <filter-name>ObjectifyFilter</filter-name> 
     <filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>ObjectifyFilter</filter-name> 
     <url-pattern></url-pattern> 
    </filter-mapping> 
    <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>com.xxxxx.gcmbackend.RegistrationEndpoint, com.xxxxx.gcmbackend.MessagingEndpoint, com.xxxxx.gcmbackend.UserRegistrationEndpoint</param-value> 
     </init-param> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>SystemServiceServlet</servlet-name> 
     <url-pattern>/_ah/spi/*</url-pattern> 
    </servlet-mapping> 

    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 
</web-app> 
相關問題