El servidor de desarrollo local emula el entorno de tiempo de ejecución de Java de App Engine y todos sus servicios, incluido Datastore.
Antes de empezar
Como Java 8 ha llegado al final del ciclo de asistencia, ya no puedes usar la versión más reciente de dev_appserver.py
para ejecutar tus aplicaciones de forma local. Para descargar una versión archivada de devapp_server.py
, sigue estos pasos:
En el archivo, descarga la carpeta comprimida que contiene el servidor
dev_appserver.py
para los tiempos de ejecución que han llegado al final del periodo de asistencia.Extrae el contenido del directorio en tu sistema de archivos local, por ejemplo, en el directorio
/home
. Puedes encontrardev_appserver.py
en el directoriogoogle_appengine/google/appengine/tools/java/bin
.
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 del SDK con la ruta relativa google_appengine/google/appengine/tools/java/bin
.
Sintaxis de comandos de Windows:
google_appengine\google\appengine\tools\java\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]
Sintaxis de comandos de Linux o macOS:
google_appengine/google/appengine/tools/java/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.
El modelo de coherencia de 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_appengine/google/appengine/tools/java/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 que no estén dentro 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 repetida de números enteros distribuidos de forma aproximadamente uniforme.
La política predeterminada en el almacén de datos 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
El comando del servidor de desarrollo admite los siguientes argumentos de símbolo del sistema:
--address=...
-
La dirección de host que se debe utilizar para el servidor. Es posible que tengas que definir este valor para poder acceder al servidor de desarrollo desde otro ordenador de tu red. La dirección
0.0.0.0
permite el acceso tanto a localhost como a nombre de host. Valor predeterminado:localhost
. --default_gcs_bucket=...
-
Define el nombre del segmento predeterminado de Google Cloud Storage.
--disable_update_check
-
Si se proporciona, el servidor de desarrollo no se pondrá en contacto con App Engine para comprobar si hay disponible una nueva versión del SDK. De forma predeterminada, el servidor busca una nueva versión al iniciarse y muestra un mensaje si hay una nueva versión disponible.
--generated_dir=...
-
Define el directorio en el que se crearán los archivos generados.
--help
-
Imprime un mensaje de ayuda y finaliza.
--jvm_flag=...
-
Pasa la marca dada como argumento de JVM. Se puede repetir para proporcionar varias marcas.
--port=...
-
El número de puerto que se debe utilizar para el servidor. El valor predeterminado es
8080
(ADMITE VALORES NULL). --sdk_root=...
-
Ruta a la CLI de gcloud, si es diferente de la ubicación de la herramienta.
--server=...
-
El servidor que se usará para determinar la versión más reciente del SDK.