1

Google App Engine モジュールをテストした人はいますか (現在プレビュー中です)。

ドキュメントには、「ステートフル サービス (Memcache、Datastore、Task Queues など) はアプリケーション内のすべてのモジュールで共有される」と記載されているため、モジュール間でデータストア コールバックも共有されているかどうかをテストしましたが、私のテストではそれが示されているようです。モジュールが何かを配置した場合、エンティティを配置したモジュールに対してのみ preput (または postput) イベントが発生します。

これは予想される動作ですか、それとも何か足りないのでしょうか? これはコードです:

モジュール1:

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
    Key key = KeyFactory.createKey("kind", "id");
    Entity e;
    e = new Entity(key);
    ds.put(e);
    super.doPost(req, resp);
}
@PrePut(kinds = { "kind" })
void updateTimestamp(PutContext context) {
    DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
    Key key = KeyFactory.createKey("ContatoreModulo1", "contatore");
    Entity e;
    int counter = 0;
    try {
        e = ds.get(key);
        counter = Integer.parseInt(String.valueOf(e.getProperty("count")));
        counter++;
    } catch (EntityNotFoundException e1) {
        e = new Entity(key);
    }
    e.setProperty("count", String.valueOf(counter));
    ds.put(e);
    throw new RuntimeException();
}

モジュール 2:

@PrePut(kinds = { "kind" })
void updateTimestamp(PutContext context) {
    DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
    Key key = KeyFactory.createKey("ContatoreModulo2", "contatore");
    Entity e;
    int counter = 0;
    try {
        e = ds.get(key);
        counter = Integer.parseInt(String.valueOf(e.getProperty("count")));
        counter++;
    } catch (EntityNotFoundException e1) {
        e = new Entity(key);
    }
    e.setProperty("count", String.valueOf(counter));
    ds.put(e);
    throw new RuntimeException();
}

簡単に言えば、MODULE1に種類「種類」のエンティティを配置し、両方のモジュールでこのエンティティのpreputコールバックをキャッチしようとしましたが、MODULE1で宣言されたpreputのみが呼び出されていることがわかります...

前もって感謝します

4

1 に答える 1