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のみが呼び出されていることがわかります...
前もって感謝します