Google App Engine + Objectify: зарегистрировать объект один раз? - PullRequest
3 голосов
/ 27 января 2012

Недавно я получил объект objectify, работающий с ядром приложения, но у меня возникают проблемы с регистрацией класса для объекта несколько раз. При разработке в 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 ]

1 голос
/ 27 января 2012

Поместите его в ServletContextListener , в частности, в ловушку contextInitialized ().Это обеспечит выполнение регистрационного кода Objectify только один раз при прогреве сервера.

1 голос
/ 27 января 2012

, посмотрев на надежный пример, подобный этому:

Объяснить в JSP

вы можете найти аналогичную попытку зарегистрировать класс, НО ... Читать комментариииз примера:

// БУДЬТЕ ОСТОРОЖНЫ с этой строкой!Это пример, но в реальном проекте вы должны выглядеть лучше
// место для регистрации сущности, рекомендуется в самом начале вашего приложения.

Итак ...У вас, вероятно, есть класс Java, в котором вы реализовали несколько методов, таких как: get / put / delete и т. Д., И в этом классе Java вы должны поместить код для регистрации класса

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

ИЛИ, ищитедругое место, которое вызывается один раз при запуске приложения

...