App Engine Java JDO 中的单元测试 XG 跨组事务
Posted
技术标签:
【中文标题】App Engine Java JDO 中的单元测试 XG 跨组事务【英文标题】:Unit Testing XG Cross Group Transaction in App Engine Java JDO 【发布时间】:2012-06-04 10:35:18 【问题描述】:我在应用引擎 java jdo 中有一个跨组事务。
它在本地开发应用引擎服务器上运行良好。
但是,通过单元测试,我得到了java.lang.IllegalArgumentException: transactions on multiple entity groups only allowed in High Replication applications
。
是否可以使用 LocalServiceTestHelper 模拟高复制应用程序?
我使用的是 1.6.6。
这是我的课,你可以按原样运行来重现:
public class Ds2Test
private final LocalServiceTestHelper helper =
new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig());
private static final PersistenceManagerFactory pmfXgInstance =
JDOHelper.getPersistenceManagerFactory("xg-transactions");
@Before
public void setUp()
helper.setUp();
@After
public void tearDown()
helper.tearDown();
@Test
public void testXgTransaction() throws Exception
PersistenceManager xgPm = pmfXgInstance.getPersistenceManager();
Transaction xgTx = xgPm.currentTransaction();
xgTx.begin();
xgTx.commit();
xgPm.close();
这里是 jdoconfig.xml 中的配置:
<persistence-manager-factory name="xg-transactions">
<property name="javax.jdo.PersistenceManagerFactoryClass"
value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/>
<property name="javax.jdo.option.ConnectionURL" value="appengine"/>
<property name="javax.jdo.option.NontransactionalRead" value="true"/>
<property name="javax.jdo.option.NontransactionalWrite" value="true"/>
<property name="javax.jdo.option.RetainValues" value="true"/>
<property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/>
<property name="datanucleus.appengine.datastoreEnableXGTransactions" value="true"/>
</persistence-manager-factory>
在xgTx.begin();
上抛出异常
【问题讨论】:
【参考方案1】:好的。我找到了需要做的事情。
private final LocalServiceTestHelper helper =
new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()**.setDefaultHighRepJobPolicyUnappliedJobPercentage(100))**;
见于:https://developers.google.com/appengine/docs/java/tools/localunittesting#Writing_HRD_Datastore_Tests
有点晦涩的设置,但确实存在。
【讨论】:
以上是关于App Engine Java JDO 中的单元测试 XG 跨组事务的主要内容,如果未能解决你的问题,请参考以下文章
对于基于(以前免费的)App Engine 构建的 Java/JDO 应用程序,有啥更实惠的托管选项? [关闭]
使用 Google App Engine 和 JDO 进行全文搜索?