Hoy es la primera vez que uso GWT y JDO. Lo estoy ejecutando con Eclipse en el modo de depuración local.App-Engine La lectura consistente de JDO no funciona, ¿tal vez el almacenamiento en caché?
hago lo siguiente:
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();
}
}
ya puse en mi <property name="datanucleus.appengine.datastoreReadConsistency" value="STRONG" />
jdoconfig.xml
. ¿Tengo que configurar algunas cosas de transacción en la configuración? ¿Alguien consiguió un trabajo jdoconfig.xml
? ¿O es el problema en otro lugar? Algunos caché en medio?
EDIT: cosas que he intentado:
- Configuración NontransactionalRead/escritura en false
- Utilizando el
PMF.get().getPersistenceManager()
varias veces - el uso de transacciones mismo/a diferente
PersistenceManager
aunque llamando - ignoreCache = verdadero en
PersistenceManager
- llamando al
flush
ycheckConsistency
El 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>
Debo estar perdiendo algo aquí porque el centro de todos los enfoques fallan ...
Edit2: Cuando Me dividir el trabajo en dos transacciones en el registro dice que la transacción de escritura pescó y luego comienza la transacción de lectura. Pero no encuentra el objeto simplemente persistente. Siempre dice Level 1 Cache of type "weak" initialised
aswell. ¿La semana es mala o buena?
Alrededor del 30% de las solicitudes que salen mal ... ¿Puedo ser un problema de carga de consultas diferidas?
También pesa sobre mí mismo problema. Agrego algunos objetos a través de mi aplicación, pero a veces no se reflejan en los resultados, ¡y a veces lo hacen! –
y el objeto está en el almacén de datos en el momento de realizar la consulta? Obviamente, el registro te diría eso. Lo que esto tiene que ver con GWT no está claro ... – DataNucleus
¿Dónde puedo encontrar un registro?¿Qué tiene que ver con GWT? Mucho, porque es un proyecto de GWT. Realmente no puedo trazar una línea clara entre GWT y el motor de la aplicación, por lo tanto, llamo a todo lo que GWT proviene de google. ¿Y por qué el almacenamiento en caché estaría tan desordenado que la misma instancia ni siquiera puede leer los datos recién escritos? ¿Podría publicar un jdoconfig.xml que siempre será coherente para el mismo cliente? –