2012-05-30 34 views
6

मेरे पास ऐप इंजन जावा jdo में एक क्रॉस समूह लेनदेन है।ऐप इंजन में एक्सजी क्रॉस ग्रुप लेनदेन जावा जेडीओ

यह स्थानीय देव ऐप इंजन सर्वर पर बहुत अच्छा काम करता है।

हालांकि, यूनिट परीक्षण से, मुझे java.lang.IllegalArgumentException: transactions on multiple entity groups only allowed in High Replication applications मिलता है।

क्या स्थानीय सेवा सेवास्टेलर का उपयोग कर उच्च प्रतिकृति अनुप्रयोग अनुकरण करना संभव है?

मैं 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();

पर फेंक दिया जाता है

यहाँ मेरी कक्षा, आप इसे चला सकते हैं के रूप में यह पुन: पेश करने के लिए है है

उत्तर

15

ठीक है। मैंने पाया कि क्या करने की जरूरत है।

private final LocalServiceTestHelper helper = 
      new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()**.setDefaultHighRepJobPolicyUnappliedJobPercentage(100))**; 

के रूप में पर देखी गई: https://developers.google.com/appengine/docs/java/tools/localunittesting#Writing_HRD_Datastore_Tests

एक छोटी सी अस्पष्ट सेटिंग है, लेकिन वहाँ यह है।