Google app engine + objectify在启动服务器时出现503 Service Unavailable错误

时间:2015-04-13 14:37:20

标签: android google-app-engine android-studio gradle objectify

我正在开发一个带有Google App Engine Java端点模块的Android应用程序作为后端,并使用Objectify框架与数据存储区进行通信。我有两个实体:父和子,以及他们自动生成的Cloud Endpoints类。有时当我启动本地服务器时,我收到以下错误:

  

信息:Gradle:执行任务:[:api:assemble]   信息:编译在40秒内完成,包含1个错误和0个警告   信息:1错误   信息:0警告

     

错误:Gradle:任务执行失败':api:appengineEndpointsGetDiscoveryDocs'。

     

运行端点命令时出错get-discovery-doc:503服务不可用       {       “错误”:{        “错误”:[         {         “域名”:“全球”,         “reason”:“backendError”,         “消息”:“后端错误”        }        ]        “代码”:503,        “消息”:“后端错误”       }       }

启动服务器时会随机出现此错误消息。有时它会正常启动,但有时我必须清理项目并在服务器运行之前重启服务器2-3次。错误消息略有不同。有时它会生成相同的503,但却无法获得客户端库。

  

错误:Gradle:任务执行失败':api:appengineEndpointsGetClientLibs'。

我不知道为什么会发生这种情况,并且想知道是否有人对此有所了解。

我已将两个端点添加到web.xml文件中,如下所示:

<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.example.backend.ParentEndpoint,
            com.example.backend.ChildEndpoint
        </param-value>
    </init-param>
</servlet>

父实体

@Entity
public class Parent {
    @Id
    Long id;
    String name;
    Ref<Child> child;

    public Parent(){}

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Child getChild() {
        return child.get();
    }

    public void setChild(Child child) {
        this.child = Ref.create(child);
    }
}

儿童实体

@Entity
public class Child {
     @Id
     Long id;
     String name;

     public Child(){}

     public Long getId() {
        return id;
     }

     public void setId(Long id) {
        this.id = id;
     }

     public String getName() {
        return name;
     }

     public void setName(String name) {
        this.name = name;
     }
}

0 个答案:

没有答案