2012-05-04 61 views
2

我花了最後一天半的時間在網上尋找答案,任何幫助都會很棒。Google App Engine HRD不能在Eclipse開發環境中工作

問題是,我們如何讓Google應用引擎高複製數據存儲(HRD)在我們的本地環境中工作,以便我們使用/測試跨組事務?

我們正在開發一個新的Java應用程序以在GAE上運行。我們使用Eclipse開始使用1.6.0版本Google sdk。我們選擇高複製數據存儲設置。我們不使用1.6.5。 我們正在使用Objectify。

我最近注意到Google和Objectify都完全支持跨羣組(XG)交易,但有限制。

我修改了部分代碼,以確保它對我們有效,但遇到了問題。 當我運行junit測試或運行我們的應用程序作爲web應用程序,它給出了錯誤:

警告:java.lang.IllegalArgumentException:不能在一個事務中的多個實體組上操作。

當運行此代碼:

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

應用引擎:

使用谷歌應用程序Eninge檢查

使用默認SDK(AppEngine上的Java-SDK-1.6.5 - 1.6.5)選擇

啓用本地人力資源開發的支持檢查

DataNucleus將使用JDO/JPA訪問檢查數據存儲

回答

0

看起來您沒有正確使用跨組(XG)事務。查看交易文檔並查看「使用跨組交易」部分下的代碼示例。有一個很好的工作代碼示例讓你開始。

https://developers.google.com/appengine/docs/java/datastore/transactions#Uses_for_Transactions

+0

謝謝你的鏈接。我們一直在使用我們的代碼中的交易,並且運行良好。我試圖解決的問題是爲什麼我們的本地開發環境似乎停留在MASTER_SLAVE上,而不是讓我們使用HIGH_REPLICATION。我認爲這是我們不能跨羣組交易的原因。 – Jim

+0

我創建了一個新的Hello World項目,並從您提供的鏈接添加了代碼XG代碼。即使數據存儲仍在報告它是MASTER_SLAVE,我仍然可以工作。這使我認爲Objectify沒有正確評估數據存儲能夠處理XG的能力。非常感謝你的幫助。 – Jim

相關問題