1

特定のインスタンスのリクエスト間で静的初期化 (たとえば永続化ライブラリ用) が永続化されると想定していましたか? 突然、私が間違っているのではないかと思いました。ウォーム インスタンスであっても、リクエストごとにアプリの初期化がやり直されているのかもしれません。

これが私が尋ねている理由です:

エンティティのリストを受け取って保存するリクエスト ハンドラーがあります (たまたま Google エンドポイントですが、関係ないと思います)。

エンティティは 20 の異なるタイプのいずれかになる可能性があるため、私の静的初期化では 20 の異なるエンティティ タイプすべてを「登録」します。私はたまたまobjectifyを使用しているので、次のようになります。

@Api(name = "myendpoint")
public class MyEndpoint {
  static {
    ObjectifyService.register( EntityOne.class );
    ObjectifyService.register( EntityTwo.class );
    ... x20
  }

リクエストごとにこのすべての「登録」を行っている場合は、リクエストに必要なエンティティのみを登録するように変更する必要があります。

(一方、私が正しく、静的 init が新しいインスタンスの作成時にのみ行われる場合は、できるだけ多くの初期化を静的 init に入れる必要があります。)

4

2 に答える 2

1

はい、静的初期化ブロックは、クラスがロードされているときにのみ実行されます。つまり、GAE インスタンスごとに 1 回だけ発生します。

他に考慮する価値のあること: 独自の Objectify サービス クラスを介してこれらのクラスを Ofy に登録し、それを使用して Objectify 機能にアクセスする方がよい場合がよくあります。https://code.google.com/p/objectify-appengine/wiki/BestPracticesを参照してください... これにより、データストアへのアクセスが発生する前にブロックが実行されます。

于 2013-11-14T22:42:05.337 に答える