Objectify GAE / J Google App Engine:了解异步加载

时间:2012-11-27 14:11:15

标签: java database google-app-engine asynchronous objectify

我是Objectify的新手,我不明白(一件蠢事)。 我正在构建一个Restful Web服务(使用restlet),我正在创建一个JSON响应。所以:

Party party;
    for(Ref<Game> jref : party.games)
    {
        JSONObject object = new JSONObject();

        try{
            Game gAux = jref.get(); //If the value ref is not load, the excetion throws
        }
        catch(IllegalStateException e)
        {
        //Is asynchronous
            jref = ObjectifyService.ofy().load().ref(jref);
        }

        serializeGame(jref.get(), object);
    }

好的,代码非常简单,我得到一个Game对象然后我将它序列化为JSON对象,然后我发送响应。 但我不明白异步load()是如何工作的。

如果load().ref(jref)是异步的:

  1. 它返回什么?因此,如果load().ref()返回“未来”对象的空对象:
  2. 使用该对象时发生了什么? (我使用空值对象?,一个“仍然在浇口”对象)?
  3. 我怎么知道对象准备好了? (一些监听器,处理程序?)使用它?
  4. 额外:如果没有任何方式可以知道对象何时就绪,我该如何加载ref同步?
  5. 非常感谢

1 个答案:

答案 0 :(得分:1)

这是在这里回答的:

https://groups.google.com/forum/?fromgroups=#!topic/objectify-appengine/8dLAbSWJVB4

“简短回答”是Ref / Map / List是异步外观,当您尝试实现POJO时,它会同步阻止。就像Future。