La CLI de Google Cloud para Java incluye un servidor de desarrollo local para probar tu aplicación en tu ordenador. El servidor de desarrollo local emula el entorno de tiempo de ejecución de Java de App Engine y todos sus servicios, incluido Datastore.
Ejecución del servidor web de desarrollo
Para obtener información sobre cómo definir las propiedades del sistema y las variables de entorno de tu aplicación, consulta Cómo se gestionan las solicitudes.
También puedes ejecutar el servidor web de desarrollo desde el símbolo del sistema. El comando que se debe ejecutar se encuentra en el directorio google-cloud-sdk/bin/ del SDK.
Sintaxis de comandos de Windows:
google-cloud-sdk\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]
Sintaxis de comandos de Linux o macOS:
google-cloud-sdk/bin/java_dev_appserver.sh [options] [WAR_DIRECTORY_LOCATION]
El comando toma la ubicación del directorio WAR de tu aplicación como argumento.
Detener el servidor de desarrollo
Para detener el servidor web, pulsa Ctrl-C.
Detectar el entorno de ejecución de la aplicación
Para determinar si tu código se está ejecutando en producción o en el servidor de desarrollo local, puedes consultar el valor del método SystemProperty.environment.value(). Por ejemplo:
if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
// Production
} else {
// Local development server
// which is: SystemProperty.Environment.Value.Development
}
Usar el emulador de Datastore local
El servidor web de desarrollo simula Datastore mediante un Datastore local respaldado por archivos en tu ordenador. El almacén de datos se llama local_db.bin y se crea en el directorio WAR de tu aplicación, en el directorio WEB-INF /appengine-generated/. No se sube con tu aplicación.
Datastore se mantiene entre las invocaciones del servidor web, por lo que los datos que almacenes seguirán estando disponibles la próxima vez que ejecutes el servidor web. Para borrar el contenido del almacén de datos, cierra el servidor y, a continuación, elimina este archivo.
Como se describe en Configuración de índices de Datastore, el servidor de desarrollo puede generar la configuración de los índices de Datastore que necesita tu aplicación, determinada a partir de las consultas que realiza mientras la pruebas. De esta forma, se genera un archivo llamado datastore-indexes-auto.xml en el directorio WEB-INF/appengine-generated/ del WAR. Para inhabilitar la configuración automática del índice, cree o edite el archivo datastore-indexes.xml en el directorio WEB-INF/, usando el atributo autoGenerate="false" para el elemento <datastore-indexes>.
Consultar Datastore en el servidor de desarrollo
Para consultar tu Datastore local mediante el servidor web de desarrollo, sigue estos pasos:
- Inicia el servidor de desarrollo como se ha descrito anteriormente.
- Ve a la consola de desarrollo.
- En el panel de navegación de la izquierda, haz clic en Datastore Viewer (Visor de Datastore) para ver el contenido de tu Datastore local.
Modelo de coherencia de Cloud Datastore
De forma predeterminada, el Datastore local está configurado de forma que el porcentaje de escrituras de Datastore que no se ven inmediatamente en las consultas globales sea del 10%.
Para ajustar este nivel de coherencia, asigna a la propiedad del sistema datastore.default_high_rep_job_policy_unapplied_job_pct un valor que corresponda a la cantidad de coherencia final que quieras que tenga tu aplicación.
-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20
Si vas a definir esta propiedad mediante el símbolo del sistema java_dev_appserver.sh, debes usar --jvm_flag=... para definirla:
google_cloud_sdk/bin/java-dev_appserver.sh --jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20
El intervalo válido de datastore.default_high_rep_job_policy_unapplied_job_pct es
entre 0 y 100. Si usas números fuera de este intervalo, recibirás un error.
Especificar la política de asignación automática de IDs
Puedes configurar cómo asigna Datastore local los IDs de entidad automáticos.
El servidor de desarrollo admite las siguientes políticas de asignación automática de IDs:
sequential
Los - IDs se asignan a partir de la secuencia de números enteros consecutivos.
scattered- Los IDs se asignan a partir de una secuencia no repetitiva de números enteros distribuidos de forma aproximadamente uniforme.
La política predeterminada de Datastore local es scattered.
Para especificar la política de ID automático, asigna a la propiedad del sistema datastore.auto_id_allocation_policy el valor sequential o scattered.
-Ddatastore.auto_id_allocation_policy=scattered
Para definir esta propiedad del sistema mediante una marca que se pasa a la macro dev_appserver, sigue estos pasos:
java_dev_appserver --jvm_flag=-Ddatastore.auto_id_allocation_policy=scattered
Simular cuentas de usuario
El servidor web de desarrollo simula las cuentas de Google con sus propias páginas de inicio y cierre de sesión. Cuando se ejecuta en el servidor web de desarrollo, los métodos que generan URLs de inicio y cierre de sesión devuelven URLs de /_ah/login y /_ah/logout en el servidor local.
La página de inicio de sesión de desarrollo incluye un formulario en el que puedes introducir una dirección de correo electrónico. En tu sesión se utilizará la dirección de correo electrónico que hayas introducido como usuario activo.
Para que la aplicación crea que el usuario que ha iniciado sesión es un administrador, marca la casilla "Iniciar sesión como administrador" del formulario.
Cómo utilizar la extracción de URL
Cuando tu aplicación usa la API URL Fetch para hacer una solicitud HTTP, el servidor web de desarrollo hace la solicitud directamente desde tu ordenador. El comportamiento puede ser diferente al de cuando tu aplicación se ejecuta en App Engine si usas un servidor proxy para acceder a sitios web.
La consola de desarrollo
El servidor web de desarrollo incluye una aplicación web de consola. Con la consola, puedes consultar el Datastore local.
Para acceder a la consola, ve a la URL /_ah/admin en tu servidor:
http://localhost:8080/_ah/admin
Argumentos de símbolo del sistema
Para ver las opciones de comandos del servidor de desarrollo local, consulta este artículo.