【发布时间】:2013-11-14 22:14:56
【问题描述】:
我一直假设静态初始化(例如,对于我的持久性库)将在给定实例的请求之间持续存在?我突然想到,也许我错了——也许我的应用程序的初始化会针对每个请求重做,即使在暖实例上也是如此。
这就是我问的原因:
我有一个接收实体列表并保存它们的请求处理程序(它恰好是一个 Google 端点,但我认为这无关紧要)。
实体可以是 20 种不同类型中的任何一种,因此我的静态初始化“注册”了所有 20 种不同的实体类型。我碰巧在使用objectify,所以它看起来像这样:
@Api(name = "myendpoint")
public class MyEndpoint {
static {
ObjectifyService.register( EntityOne.class );
ObjectifyService.register( EntityTwo.class );
... x20
}
如果它为每个请求进行所有这些“注册”,那么我最好将其更改为仅注册请求所需的实体。
(另一方面,如果我是对的,并且我的静态初始化仅在创建新实例时完成,那么我应该将尽可能多的初始化放入静态初始化中。)
【问题讨论】:
-
请不要做任何能给我加分的事情——刚刚意识到我在 3333!
-
你最好避免在静态初始化块中初始化objectify——你需要在类之前添加翻译器,并且objectify在注册时不会对工厂应用任何线程安全。此外,这种方式会使本地调试/热加载很痛苦。
标签: java google-app-engine objectify