私は答えを求めて Web を検索するのに最後の 1 日半を費やしました。
問題は、クロス グループ トランザクションを使用/テストするために、ローカル環境で Google アプリ エンジンの高レプリケーション データ ストア (HRD) を動作させるにはどうすればよいかということです。
GAE で実行する新しい Java アプリを開発しています。Eclipse を使用して 1.6.0 バージョンの Google SDK から始めました。High Replication Datastore 設定を選択します。1.6.5 は使用していません。Objectifyを使用しています。
最近、Google と Objectify の両方がクロス グループ (XG) トランザクションを制限付きで完全にサポートしていることに気付きました。
コードの一部を修正して動作するようにしましたが、問題が発生しました。junit テストを実行するか、アプリケーションを Web アプリケーションとして実行すると、次のエラーが表示されます。
警告: java.lang.IllegalArgumentException: 1 つのトランザクションで複数のエンティティ グループを操作することはできません。
このコードを実行すると:
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
System.out.println(ds.getDatastoreAttributes().getDatastoreType());
MASTER_SLAVE を取得します。
アプリケーションを展開して、そこで動作するかどうかを確認したことはありません。ローカル環境で動作するようになるまでは、おそらく良い考えではありません。
ここにいくつかの設定があります
引数、VM 引数:
-javaagent:/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.6.5/appengine-java-sdk-1.6.5/lib/agent/appengine-agent.jar -Ddatastore.default_high_rep_job_policy_unapplied_job_pct=50 -Xmx512m -XstartOnFirstThread - Xbootclasspath/p:/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.6.5/appengine-java-sdk-1.6.5/lib/override/appengine-dev-jdk-overrides.jar
アプリ エンジン:
[Google App Eninge を使用する] をオンにしました
[デフォルト SDK を使用 (appengine-java-sdk-1.6.5 - 1.6.5)] が選択されています
[ローカル HRD サポートを有効にする] がオンになっている
Datanucleus JDO/JPA を使用して、チェックされたデータストアにアクセスします