У меня есть межгрупповая транзакция в движке приложения java jdo.
Он отлично работает на локальном сервере механизма разработки приложений.
Однако при модульном тестировании я получаю java.lang.IllegalArgumentException: транзакции в нескольких группах сущностей разрешены только в приложениях с высоким уровнем репликации
.
Можно ли смоделировать приложение с высоким уровнем репликации с помощью 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();