Google App Engine + Objectify:注册对象一次?

时间:2012-01-27 03:45:03

标签: google-app-engine jsp objectify

我最近使用app引擎进行了客观化,但是我在多次注册一个用于客观化的类时遇到了麻烦。在Eclipse中进行开发时,每次刷新localhost时重新编译并再次运行,注册学生的脚本会多次运行,并且只需刷新一次就会崩溃程序。

<%
//In my main.jsp file, which is the main interactive html page
ObjectifyService.register(Object.class);
%>

如何确保此脚本仅运行一次?有没有办法检查一个类是否注册了objectify?我按照另一个stackoverflow线程的建议执行以下操作:

public class Object {
    ...
    static {
        ObjectifyService.register(Object.class);
    }
    ...
}

这给了我一个不同的错误。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

通过查看这样一个可靠的例子:

Objectify in JSP

您可以找到类似的注册类的尝试,但是......阅读示例中的注释:

  

//小心这条线!这是一个例子,但在现实世界的项目中,你应该看起来更好   //建议在应用程序的最开始部分注册实体。

所以...你可能有一个java类,你在其中实现了几个方法,比如:get / put / delete等...在那个java类中你应该放置代码来注册类

    static {
        ObjectifyService.register(Object.class);
    }

或者,在应用程序启动时查找一次被调用的其他地方

答案 1 :(得分:1)

将它放在ServletContextListener上,特别是在contextInitialized()钩子上。这将确保Objectify注册​​码仅在服务器预热时执行一次。