Google App Engine (Java): servlets, almacén de datos y subprocesos múltiples

Estoy creando un sitio web con el motor de aplicaciones de Google, pero tengo una pregunta sobre los servlets del lado del servidor y cómo interactúan con la base de datos del almacén de datos.

Básicamente, vuelve a la condición de carrera tradicional de lectura-modificación-escritura; es decir, estoy leyendo una entidad fuera del almacén de datos, posiblemente actualizándola, y luego escribiendo la actualización si hay una.

Básicamente, ¿puedo sincronizar el acceso al almacén de datos? ¿Realmente necesito? Por lo que entiendo, el servidor puede generar tantas instancias de mis servlets como quiera; Estoy usando métodos estáticos en mis cosas 'detrás de escena', así que pensé que podría sincronizar los métodos estáticos con un objeto de bloqueo estático.

Básicamente, no sé qué defensas contra las condiciones de carrera / etc. que necesito / no necesito tomar. Si hay una guía útil en algún lugar, sería genial, pero parece que no puedo encontrar una.

Respuesta 1

Ninguna synchronizedestrategia lo ayudará aquí porque no son (solo) muchas instancias del servlet que GAE puede generar, sino también muchas máquinas virtuales diferentes. Para resolver su pregunta básica sobre la prevención de problemas de coherencia con el almacén de datos, tendrá que acceder a sus datos en transacciones atómicas. Consulta aquí: Transacciones

Respuesta: 2

Le di un archivo XML y una etiqueta contiene varios atributos. Sin embargo, uno de ellos a veces se salta. Exampe: <data> <item attribute0 = "value 0" attribute1 = "value 1" attribute2 = "value ...

¿hay alguna propiedad CSS que establezca el radio del círculo? Intuitivamente he intentado "fx-radius" o "fx-size" pero no es así. No quiero establecer cada radio de círculo por separado en el archivo fxml; <...

Estamos migrando nuestro proyecto a Java 9 y obtengo esta excepción al usar geotools: java.lang.IllegalArgumentException: org.opengis.referencing.datum.DatumFactory no es una clase ImageIO SPI ...

Necesito comenzar mi clase de Java como un proceso en segundo plano sin usar jsvc. ¿Cómo podría hacer esto?