2012-05-30 6 views
6

Tengo una transacción de grupo cruzado en el motor de aplicación java jdo.Prueba de unidad XG Transacción de grupo cruzado en App Engine Java JDO

Funciona muy bien en el servidor local del motor de la aplicación de desarrollo.

Sin embargo, de la prueba unitaria, obtengo un java.lang.IllegalArgumentException: transactions on multiple entity groups only allowed in High Replication applications.

¿Es posible simular una aplicación de alta replicación utilizando LocalServiceTestHelper?

Estoy usando 1.6.6.

Aquí es mi clase, se puede ejecutar ya que es reproducir:

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(); 
     } 
} 

Y aquí es la configuración en 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> 

La excepción se produce en xgTx.begin();

Respuesta

Cuestiones relacionadas