Dzisiaj po raz pierwszy używam GWT i JDO. Używam go z Eclipse w lokalnym trybie debugowania.JDO aplikacji App-Engine nie działa, może buforowanie?
zrobić następujące rzeczy:
public Collection<MyObject> add(MyObject o) {
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
pm.makePersistent(o);
Query query = pm.newQuery(MyObject.class);// fetch all objects incl. o. But o only sometimes comes...
List<MyObject> rs = (List<MyObject>) query.execute();
ArrayList<MyObject> list= new ArrayList<MyObject>();
for (MyObject r : rs) {
list.add(r);
}
return list;
} finally {
pm.close();
}
}
już ustawione <property name="datanucleus.appengine.datastoreReadConsistency" value="STRONG" />
w moim jdoconfig.xml
. Czy muszę ustawić inne elementy transakcji w konfiguracji? Czy ktoś dostał działający jdoconfig.xml
? Czy problem występuje gdzie indziej? Jakieś buforowanie pomiędzy nimi?
EDIT: Czego próbowałem:
- Ustawianie NontransactionalRead/zapis do fałszywego
- stosując tę samą/inną
PersistenceManager
choć wzywającąPMF.get().getPersistenceManager()
wielokrotnie - wykorzystaniem transakcji
- ignoreCache = true pod numerem
PersistenceManager
- dzwoniąc pod numer
flush
icheckConsistency
jdoconfig:
<persistence-manager-factory name="transactions-optional">
<property name="datanucleus.appengine.datastoreReadConsistency" value="STRONG" />
<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"/>
</persistence-manager-factory>
I musi być brakuje czegoś centralną tutaj, ponieważ wszystkie podejścia nie ...
EDIT2: Kiedy podzielić pracę na dwie transakcji dziennik mówi że transakcja zapisu została wyłowiona, a następnie rozpoczyna się transakcja odczytu. Ale nie znajduje obiektu, który jest właśnie persytem. Zawsze jest napisane: Level 1 Cache of type "weak" initialised
. Czy tydzień jest zły czy dobry?
To około 30% żądań, które idą źle ... Może będę jakiś leniwy zapytanie ładowanie problemu?
ja również zmierzyć sam problem. Dodaję obiekty za pośrednictwem mojej aplikacji, ale czasami nie odzwierciedlają one wyników, a czasem tak się dzieje! –
, a obiekt jest w magazynie danych w momencie wykonywania zapytania? Oczywiście dziennik by ci to powiedział. Co to ma wspólnego z GWT jest niejasne ... – DataNucleus
Gdzie znajdę dziennik?Co to ma wspólnego z GWT? Dużo, ponieważ jest to projekt GWT. Nie mogę tak naprawdę wytyczyć wyraźnej granicy między GWT a aplikacją, dlatego nazywam wszystko GWT, które pochodzi z google. I dlaczego buforowanie byłoby tak zepsute, że ta sama instancja nie może nawet odczytać danych właśnie napisanych? Czy możesz opublikować plik jdoconfig.xml, który zawsze będzie spójny dla tego samego klienta? –