Sunteți pe pagina 1din 27

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

Aspectos generales de App Engine para Java Bienvenido a Google App Engine para Java. Con App Engine, se puede crear aplicaciones web a travs de tecnologas estndar de Java y ejecutarlas en la infraestructura escalable de Google. El entorno de Java proporciona un JVM Java 6, una interfaz de servlets Java y la compatibilidad de interfaces estndar con los servicios y el almacn de datos escalable de App Engine como, por ejemplo, JDO, JPA, JavaMail y JCache. La compatibilidad con los estndares permite desarrollar tu aplicacin de forma fcil y familiar, as como trasladarla fcilmente hacia tu propio entorno de servlet y desde este. El complemento de Google para Eclipse aade asistentes para proyectos nuevos y configuraciones de depuracin a tu entorno integrado de desarrollo (IDE) de Eclipse para proyectos de App Engine. App Engine para Java facilita especialmente el desarrollo y la implementacin de aplicaciones web de gran calidad a travs de Google Web Toolkit (GWT). El complemento de Eclipse se suministra junto con los SDK de GWT y de App Engine. Los complementos de terceros tambin estn disponibles para otros IDE Java. Para NetBeans, consulta la compatibilidad de NetBeans con Google App Engine. Para IntelliJ, consulta la integracin de Google App Engine para IntelliJ. (Estos enlaces te llevan a los sitios web de terceros). Si an no lo has hecho, consulta la Gua de introduccin de Java que ofrece una presentacin interactiva del desarrollo de aplicaciones web con tecnologas Java y Google App Engine. El entorno de tiempo de ejecucin Java App Engine ejecuta aplicaciones Java que utilizan el equipo virtual Java 6 (JVM). El SDK de App Engine es compatible con Java 5 y versiones posteriores, y JVM Java 6 puede utilizar clases compiladas con cualquier versin del compilador de Java hasta Java 6. App Engine utiliza el estndar Java Servlet para aplicaciones web. Proporcionas clases de servlets de tu aplicacin, pginas del servidor Java (JSP), archivos estticos y archivos de datos, junto con el descriptor de implementacin (el archivo web.xml) y otros archivos de configuracin en una estructura de directorio WAR estndar. App Engine muestra solicitudes a travs de la invocacin de servlets segn el descriptor de implementacin. El JVM se ejecuta en un entorno seguro de espacio aislado para aislar tu aplicacin por servicio y seguridad. El espacio aislado garantiza que la

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

aplicacin solo pueda realizar acciones que no interfieran con el rendimiento ni con la escalabilidad de otras aplicaciones. Por ejemplo, una aplicacin no puede generar cadenas, escribir datos en el sistema de archivos local ni establecer conexiones de red arbitrarias. Una aplicacin tampoco puede utilizar JNI ni ningn otro cdigo nativo. El JVM puede ejecutar cualquier cdigo de bytes de Java que opere dentro de las restricciones del espacio aislado. Para obtener ms informacin, consulta Entorno de servlet. El almacn de datos, los servicios y las interfaces estndar App Engine proporciona servicios escalables que pueden utilizar las aplicaciones para almacenar datos continuamente, acceder a recursos en la red y llevar a cabo otras tareas como, por ejemplo, administrar datos de imgenes. Siempre que sea posible, las interfaces Java para estos servicios se ajustan a las API estndar establecidas para poder trasladar aplicaciones hacia y desde App Engine. Adems, cada uno de los servicios proporciona una interfaz completa de nivel inferior para implementar nuevos adaptadores de interfaz o para acceder directamente. Las aplicaciones pueden utilizar el almacn de datos de App Engine para un almacenamiento de datos continuo, escalable y fiable. El almacn de datos admite dos interfaces Java estndar: los objetos de datos Java (JDO) 2.3 y el API Java de persistencia (JPA) 1.0. Estas interfaces se implementan a travs de DataNucleus Access Platform, la implementacin de cdigo abierto de estos estndares. Memcache de App Engine proporciona un almacenamiento en cach distribuido, transitorio y rpido de los resultados de clculos y consultas al almacn de datos. La interfaz Java implementa JCache (JSR 107). Las aplicaciones utilizan el servicio de extraccin de URL para acceder a recursos en la Web y para comunicarse con otros hosts que utilicen los protocolos HTTP y HTTPS. Las aplicaciones Java pueden utilizar simplemente java.net.URLConnection y clases relacionadas de la biblioteca estndar de Java para acceder a este servicio. Una aplicacin puede utilizar el servicio de correo para enviar mensajes de correo electrnico en nombre de los administradores de la aplicacin o del usuario actual. Las aplicaciones Java utilizan la interfaz JavaMail para enviar mensajes de correo electrnico.

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

El servicio de imgenes permite a las aplicaciones transformar y administrar datos de imgenes en varios formatos, entre los que se incluyen las funciones de recorte, rotacin, cambio de tamao y mejora del color de fotografa. El servicio puede gestionar tareas de procesamiento de imgenes que utilizan muchos recursos de CPU y deja ms recursos disponibles para que el servidor de la aplicacin administre solicitudes web. (Tambin puedes utilizar cualquier software de procesamiento de imgenes basado en JVM en el servidor de la aplicacin, siempre y cuando funcione dentro de las restricciones del espacio aislado). Una aplicacin puede utilizar Google Accounts para la autenticacin de usuarios. Google Accounts gestiona la creacin y el acceso de cuentas de usuario. Los usuarios que ya dispongan de una cuenta de Google (p. ej., una cuenta de Gmail) podrn utilizarla con tu aplicacin. Una aplicacin puede detectar cundo el usuario actual ha iniciado sesin y puede acceder a su direccin de correo electrnico. Las aplicaciones Java pueden utilizar restricciones de seguridad en el descriptor de implementacin para controlar el acceso a travs de Google Accounts, as como detectar si el usuario ha accedido y obtener la direccin de correo electrnico a travs del mtodo getUserPrincipal() del objeto de solicitud del servlet. Una aplicacin puede utilizar el API de nivel inferior de Google Accounts para generar URL de acceso y de salida, as como para obtener un objeto de datos de usuario adecuado para que se guarde en el almacn de datos. Tareas programadas Una aplicacin puede configurar tareas programadas que invocan URL de la aplicacin segn los intervalos especificados. Para obtener ms informacin, consultatareas cron. Herramientas Java El SDK Java de App Engine incluye herramientas para probar tu aplicacin, subir archivos de la aplicacin y descargar datos de registro. El SDK tambin incluye un componente para Apache Ant que permite simplificar tareas comunes en proyectos de App Engine. El complemento de Google para Eclipse aade funciones al IDE de Eclipse para desarrollar, probar e implementar App Engine y, adems, incluye el SDK completo de App Engine. El complemento de Eclipse tambin facilita el desarrollo de las aplicaciones de Google Web Toolkit y las ejecuta en App Engine.

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

El servidor de desarrollo ejecuta la aplicacin en tu equipo local para desarrollarla y probarla. El servidor simula el almacn de datos, los servicios y las restricciones del espacio aislado de App Engine. El servidor de desarrollo tambin puede generar configuraciones para ndices de almacenes de datos basados en las consultas que realiza la aplicacin durante la prueba. Una herramienta multiuso llamada AppCfg gestiona toda la interaccin del smbolo del sistema mientras tu aplicacin se ejecuta en App Engine. AppCfg puede subir tu aplicacin a App Engine o simplemente actualizar la configuracin de ndices del almacn de datos para que puedas compilar nuevos ndices antes de actualizar el cdigo. Tambin puede descargar los datos de registro de la aplicacin para que puedas analizar el rendimiento de tu aplicacin mediante tus propias herramientas.

Uso del complemento de Google para Eclipse Es muy fcil utilizar el entorno de desarrollo de Eclipse para desarrollar tu aplicacin Java de App Engine, as como cualquier otra aplicacin web basada en servlet. Con el complemento de Google para Eclipse, es an ms fcil. El complemento te permite crear, probar y subir aplicaciones App Engine desde Eclipse.

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

El complemento de Google para Eclipse tambin permite desarrollar aplicaciones a travs de Google Web Toolkit (GWT) para ejecutarlas en App Engine o en cualquier otro entorno. En este artculo se describe cmo instalar el complemento de Google para Eclipse, y cmo crear un nuevo proyecto de App Engine y depurarlo mediante el servidor de desarrollo que se ejecuta en Eclipse. Adems, tambin se describe cmo utilizar el complemento para subir tu proyecto a App Engine. Para obtener ms informacin sobre el complemento, incluido cmo utilizarlo en proyectos de Google Web Toolkit, consulta la documentacin del complemento de Google para Eclipse.

Obtencin de Eclipse Instalacin del complemento de Google para Eclipse Creacin de un proyecto Ejecucin de un proyecto Subida a Google App Engine Ejecucin de las herramientas del smbolo del sistema

Obtencin de Eclipse El complemento de Google para Eclipse est disponible para Eclipse 3.3 (Europa), Eclipse 3.4 (Ganymede) y Eclipse 3.5 (Galileo). "Eclipse IDE for Java EE Developers" incluye todos los componentes necesarios para el desarrollo de la aplicacin web. Adems del complemento de Google para Eclipse, recomendamos los complementos de Web Tools Platform (WTP) para el desarrollo web. Consulta el sitio web de Web Tools Platform. Entre otras cosas, WTP ofrece modos de edicin para archivos JSP y HTML. Instalacin del complemento de Google para Eclipse Puedes instalar el complemento de Google para Eclipse a travs de la funcin de actualizacin de software de Eclipse. Para instalar el complemento a travs de Eclipse 3.6 (Helios): 1. Selecciona el men Help > Install New Software... (Ayuda > Instalar software nuevo). 2. En el cuadro de texto Work with (Trabajar con), introduce:

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

http://dl.google.com/eclipse/plugin/3.6 Haz clic en el botn Add... (Aadir). En el cuadro de dilogo que aparece, haz clic en OK (Aceptar). Deja el nombre en blanco; el sistema lo obtendr del sitio actualizado. 3. Haz clic en el tringulo situado junto a "Plugin" (Complemento) y "SDKs" (SDK). Marca las casillas de verificacin situadas junto a "Google Plugin for Eclipse 3.6" y "Google App Engine Java SDK" (SDK Java de Google App Engine). Tambin puedes seleccionar "Google Web Toolkit SDK" (SDK de Google Web Toolkit) si quieres utilizar Google Web Toolkit con tus aplicaciones. Haz clic en el botn Next (Siguiente). Sigue las indicaciones que aparecen para aceptar las condiciones del servicio e instalar el complemento. 4. Al finalizar la instalacin, aparece un mensaje de Eclipse solicitando que reinicies el sistema. Haz clic en Yes (S). Eclipse se reinicia y el complemento ya est instalado. El proceso de instalacin del complemento para Eclipse 3.5 (Galileo) es casi idntico, aunque la ubicacin de la instalacin es diferente. La ubicacin del complemento de Google para Eclipse 3.5 es la siguiente:

http://dl.google.com/eclipse/plugin/3.5

Para instalar el complemento a travs de Eclipse 3.4 (Ganymede): 1. Selecciona el men Help > Software Updates... (Ayuda > Actualizaciones de software...). Se abre la ventana "Software Updates and Add-ons" (Actualizaciones de software y complementos). 2. Selecciona la pestaa Available Software (Software disponible). Haz clic en el botn Add Site... (Aadir sitio). Se abre la ventana "Add Site" (Aadir sitio). En "Location" (Ubicacin), introduce la ubicacin de la instalacin de la versin Eclipse 3.4 del complemento: http://dl.google.com/eclipse/plugin/3.4 Haz clic en OK (Aceptar). Se cierra el cuadro de dilogo y la nueva ubicacin se aade a la lista de software disponible.

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

3. Haz clic en el tringulo situado junto a la nueva ubicacin de instalacin y, a continuacin, selecciona el tringulo situado junto a "Google" para ver las opciones de instalacin. Marca las casillas de verificacin situadas junto a "Google Plugin for Eclipse 3.4" y "Google App Engine Java SDK" (SDK Java de Google App Engine). Tambin puedes seleccionar "Google Web Toolkit SDK" (SDK de Google Web Toolkit) si quieres utilizar Google Web Toolkit con tus aplicaciones. Haz clic en el botn Install... (Instalar). Sigue las indicaciones que aparecen para aceptar las condiciones del servicio e instalar el complemento. Nota: el proceso de instalacin del complemento puede tardar varios minutos, ya que Eclipse actualiza las dependencias. Para obtener ms informacin, consulta la seccin de preguntas frecuentes. 4. Al finalizar la instalacin, aparece un mensaje de Eclipse solicitando que reinicies el sistema. Haz clic en Yes (S). Eclipse se reinicia y el complemento ya est instalado. El proceso de instalacin del complemento de Eclipse 3.3 (Europa) es similar, aunque las indicaciones y la ubicacin de la instalacin son diferentes. La ubicacin del complemento de Google para Eclipse 3.3 es la siguiente:

http://dl.google.com/eclipse/plugin/3.3

Para obtener ms informacin sobre la actualizacin del software, consulta la documentacin de Eclipse. Creacin de un proyecto Para crear un nuevo proyecto de App Engine: 1. En el men File (Archivo), selecciona New > Web Application Project (Nuevo > Proyecto de aplicacin web). Si no encuentras esta opcin de men, en el men Window (Ventana), selecciona Reset Perspective... (Restablecer perspectiva), haz clic en OK (Aceptar) y, a continuacin, vuelve a probar con el menFile (Archivo). Tambin puedes hacer clic en el botn "New Web Application Project" (Nuevo proyecto de aplicacin web) en la barra de herramientas: . 2. Se abre el asistente "Create a Web Application Project" (Crear un proyecto de aplicacin web). En "Project name" (Nombre de proyecto),

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

introduce un nombre para el proyecto como, por ejemplo, Guestbook para el proyecto descrito en la Gua de introduccin. En "Package" (Paquete), introduce un nombre de paquete adecuado como, por ejemplo, guestbook. 3. Si no utilizas Google Web Toolkit, desmarca la casilla de verificacin "Use Google Web Toolkit" (Utilizar Google Web Toolkit). Comprueba que la casilla de verificacin "Use Google App Engine" (Utilizar Google App Engine) est marcada. 4. Si has instalado el SDK de App Engine a travs de la actualizacin de software, el complemento ya estar configurado para utilizar los SDK que se instalaron. Si quieres utilizar una instalacin independiente del SDK de App Engine, haz clic en Configure SDKs... (Configurar SDK...) y sigue las indicaciones que aparecen para aadir una configuracin al directorio appengine-java-sdk/ de tu SDK. 5. Haz clic en Finish (Finalizar) para crear el proyecto. El asistente crea una estructura de directorios para el proyecto que incluye un directorio src/ para archivos fuente Java y un directorio war/ para clases compiladas y otros archivos para la aplicacin, bibliotecas, archivos de configuracin, archivos estticos (p. ej., imgenes y CSS) y otros archivos de datos. El asistente tambin crea un archivo de origen servlet y dos archivos de configuracin. La estructura de directorios completa es similar a esta: Guestbook/ src/ guestbook/ server/ GuestbookServlet.java META-INF/ jdoconfig.xml

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

log4j.properties logging.properties war/ WEB-INF/ lib/ ...App Engine JARs... appengine-web.xml web.xml index.html El directorio war/ utiliza el formato estndar WAR para asociar aplicaciones web. (Los archivos del archivo WAR todava no son compatibles con el SDK). El complemento de Eclipse utiliza este directorio para ejecutar el servidor de desarrollo y para implementar la aplicacin en App Engine. Cuando Eclipse compila tu proyecto, crea un directorio denominado classes/ en war/WEB-INF/ y coloca en l los archivos de clase compilados. Eclipse tambin copia archivos que no son archivos fuente de src/ a war/WEB-INF/classes/, entre los que se incluyen META-INF/, as como los archivoslog4j.properties y logging.properties. El contenido final del directorio war/ prepara la aplicacin para poderse probar e implementar. Para obtener informacin detallada sobre el nuevo proyecto que crea el complemento, consulta la Gua de introduccin. Ejecucin del proyecto El SDK de App Engine incluye un servidor web para probar tu aplicacin en un entorno simulado. El complemento de Google para Eclipse aade nuevos elementos al men Run (Ejecutar) para iniciar este servidor. Para ejecutar la aplicacin en el servidor web del depurador de Eclipse, en el men Run (Ejecutar), selecciona Debug As > Web Application (Depurar como > Aplicacin web). Eclipse crea el proyecto y cambia a la perspectiva de depuracin y, a continuacin, el servidor se inicia. Si el servidor se inicia

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

correctamente, aparecern varios mensajes en la consola, incluido un mensaje similar a este: The server is running at http://localhost:8888/ Si quieres personalizar la forma en la que se inicia el servidor, puedes crear una nueva configuracin "Run/Debug" (Ejecutar/Depurar) del tipo "Web Application" (Aplicacin web). Para probar la nueva aplicacin que ha creado el complemento, inicia el servidor como se indica anteriormente y, a continuacin, accede a la siguiente URL a travs de tu navegador (mediante una ruta de URL adecuada para tu aplicacin): http://localhost:8888/guestbook Con Eclipse, puedes dejar que el servidor se ejecute en el depurador mientras realizas cambios en el cdigo fuente, JSP, archivos estticos y appengineweb.xml. Al guardar los cambios en el cdigo fuente, Eclipse compila la clase de forma automtica y, a continuacin, intenta insertarla en el servidor web en ejecucin de forma dinmica. En la mayora de los casos, puedes simplemente volver a cargar la pgina en tu navegador para probar la nueva versin del cdigo. El servidor de desarrollo reconoce de forma automtica los cambios realizados en JSP, archivos estticos y appengine-web.xml, los cuales surten efecto sin reiniciar el servidor. Si cambias web.xml u otros archivos de configuracin, debes detener e iniciar el servidor para que los cambios surtan efecto. Para detener el servidor, asegrate de que el panel Debug (Depurar) est seleccionado y, a continuacin, haz clic en el botn "Terminate" (Finalizar): . Subida a Google App Engine El complemento de Google para Eclipse aade varios botones a la barra de herramientas de Eclipse. El botn de implementacin de App Engine permite subir la aplicacin a App Engine: . Antes de subir la aplicacin por primera vez, debes registrar un ID de aplicacin en App Engine a travs de la Consola del administrador. Registra un ID de aplicacin. A continuacin, edita el archivo appengine-web.xml y

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

cambia el elemento <application>...</application> de forma que incluya el nuevo ID. Al hacer clic en el botn de implementacin de App Engine, se muestra un mensaje de Eclipse solicitando el nombre de usuario de tu cuenta de administrador (tu direccin de correo electrnico) y contrasea. Introduce la informacin de la cuenta y haz clic en el botn Upload (Subir) para llevar a cabo la subida. Eclipse obtiene el ID de la aplicacin e informacin sobre la versin a partir del archivo appengine-web.xml y sube el contenido del directorio war/. Prueba tu aplicacin en App Engine visitando la URL correspondiente: http://<your application ID>.appspot.com/guestbook Ejecucin de las herramientas de smbolo del sistema Algunas funciones de las herramientas del SDK Java de App Engine solo estn disponibles mediante la ejecucin directa de las herramientas desde el smbolo del sistema. Si has instalado el SDK a travs de Eclipse, puedes ejecutar estas herramientas desde el directorio de instalacin del complemento de Eclipse. El SDK se encuentra en el directorio de instalacin de Eclipse, en plugins/com.google.appengine.eclipse.sdkbundle_VERSION/, donde VERSION es un identificador de versin del SDK. En este directorio se encuentra el subdirectorio appengine-java-sdk/bin/ que contiene las herramientas. Nota: si utilizas Mac OS X o Linux, debes asignar permiso de ejecucin a los archivos de comandos antes de ejecutarlos. Por ejemplo, para asignar permiso de ejecucin a appcfg.sh, introduce el siguiente comando desde el directorio appengine-java-sdk/bin/: chmod u+x appcfg.sh. Para obtener ms informacin sobre las funciones disponibles de forma exclusiva desde el smbolo del sistema, consulta Subida y administracin.

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

Google Plugin for Eclipse 3.7(Indigo) Installation Instructions This procedure installs the Google Plugin for Eclipse and optionally the Google Web Toolkit SDK and the Google App Engine SDK. 1. Start Eclipse, then select Help > Install New Software... In the dialog that appears, enter the update site URL into the Work with text box: http://dl.google.com/eclipse/plugin/3.7 And press the enter key.

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

2. You should see the center box filled with Plugin and SDKs. Select the checkbox next to both of these. This will install the plugin, a Google App Engine Java SDK and a Google Web Toolkit SDK. Click Next. Note: If you are installing the plugin on a multi-user install of Eclipse, please see this FAQ entry. Installing the SDKs is optional; you can always install them later on. If you are having trouble installing from the update site, please see this FAQ entry.

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

3. Review the features that you are about to install. Click Next.

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

4. Read the license agreements and then select I accept the terms of the license agreements. Click Finish.

5. You will then be asked be asked if you would like to restart Eclipse. Click Restart Now.

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

6. Now you are ready to build Google Web Toolkit and App Engine applications! If you encountered issues during the installation, please see the FAQ.

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

El entorno Java Servlet App Engine ejecuta tu aplicacin web Java a travs del JVM Java 6 en un entorno seguro de espacio aislado. App Engine invoca las clases de servlet de tu aplicacin para administrar solicitudes y preparar respuestas en este entorno. Seleccin de la versin del API Java Solicitudes y dominios Solicitudes y servlets Respuestas El periodo de tiempo de las solicitudes La zona de pruebas Accesos permitidos a la clase de JRE Acceso El entorno Cuotas y lmites Seleccin de la versin del API Java App Engine sabe que debe utilizar el entorno de tiempo de ejecucin Java para tu aplicacin cuando utilizas la herramienta AppCfg del SDK Java para subir la aplicacin. En el momento de la publicacin de este artculo, solo exista una versin del API Java de App Engine. Esta API se representa mediante appengine-api*.jarincluido en el SDK (donde * representa la versin del API y del SDK). Selecciona la versin del API que utiliza tu aplicacin incluyendo este JAR en el directorioWEB-INF/lib/ de la aplicacin. Si se publica una nueva versin del entorno de tiempo de ejecucin Java que introduzca cambios no compatibles con las aplicaciones existentes, ese entorno dispondr de un nuevo nmero de versin. Tu aplicacin seguir utilizando la versin anterior hasta que sustituyas el JAR por la nueva versin (de un SDK ms nuevo) y vuelvas a subir la aplicacin. Solicitudes y dominios App Engine determina que una solicitud entrante est destinada a tu aplicacin a partir del nombre de dominio de la solicitud. Una solicitud cuyo

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

nombre de dominio sea application-id.appspot.com se dirige a la aplicacin cuyo ID es application-id. Todas las aplicaciones obtienen un nombre de dominioappspot.com de forma gratuita. Los dominios appspot.com tambin son compatibles con subdominios que presentan el formato subdomain.application-id.appspot.com, Donde subdomain puede ser cualquier cadena permitida en una parte de un nombre de dominio (no .). Las solicitudes enviadas a un subdominio de esta forma se dirigen a tu aplicacin. Puedes configurar un dominio de nivel superior personalizado mediante Google Apps. Google Apps te permite asignar subdominios del dominio de tu empresa a distintas aplicaciones, como Gmail o Sites. Adems, puedes asociar una aplicacin App Engine a un subdominio. Para mayor comodidad, puedes configurar un dominio de Google Apps cuando registres tu ID de aplicacin o ms tarde desde la Consola del administrador Las solicitudes de estas URL se dirigen todas a la versin de tu aplicacin que has seleccionado como versin predeterminada en la Consola del administrador. Cada versin de tu aplicacin tambin incluye su propia URL, de modo que puedes implementar y probar una nueva versin antes de establecerla como versin predeterminada. La URL especfica de la versin utiliza el identificador de versiones del archivo de configuracin de tu aplicacin adems del nombre de dominioappspot.com, siguiendo este patrn: version-id.latest.application-id.appspot.com. Tambin puedes utilizar subdominios con la URL especfica de la versin: subdomain.versionid.latest.application-id.appspot.com El nombre de dominio utilizado para la solicitud se incluye en los datos de la solicitud transmitidos a la aplicacin. Si quieres que tu aplicacin responda de forma diferente en funcin del nombre de dominio utilizado para acceder a ella (por ejemplo, restringir el acceso a determinados dominios o redireccionar a un dominio oficial), puedes comprobar los datos de la solicitud (como la cabecera de la solicitud Host) para el dominio desde dentro del cdigo de la aplicacin y responder adecuadamente. Solicitudes y servlets Cuando App Engine recibe una solicitud web para tu aplicacin, invoca el servlet correspondiente de la URL, tal y como se describe en el descriptor de implementacin (el archivo web.xml del directorio WEB-INF/). Utiliza el API

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

Java Servlet para proporcionar los datos de la solicitud al servlet y acepta los datos de respuesta. App Engine utiliza varios servidores web para ejecutar tu aplicacin y ajusta automticamente el nmero de servidores en uso para procesar las solicitudes de una forma segura. Una determinada solicitud se puede enviar a cualquier servidor, que no tiene que ser el mismo servidor que proces una solicitud anterior procedente del mismo usuario. En la siguiente clase de servlet de ejemplo aparece un mensaje sencillo en el navegador del usuario. import java.io.IOException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/plain"); resp.getWriter().println("Hello, world"); } }

Respuestas App Engine invoca el servlet mediante un objeto de solicitud y un objeto de respuesta. A continuacin, espera a que el servlet rellene el objeto de respuesta y devuelve los resultados. Cuando el servlet devuelve los resultados, los datos del objeto de respuesta se envan al usuario. App Engine no permite enviar datos al cliente, realizar clculos adicionales en la aplicacin y, posteriormente, enviar ms datos. En otras palabras, App Engine no admite la transmisin de datos como respuesta a una nica solicitud. Si el cliente enva cabeceras HTTP con la solicitud que indican que puede aceptar contenido comprimido (gzipeed), App Engine comprime los datos de respuesta de forma automtica y adjunta las cabeceras de respuesta correspondientes. Utiliza las dos cabeceras de solicitud Accept-

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

Encoding y User-Agent para determinar si el cliente puede recibir respuestas comprimidas de forma segura. Los clientes personalizados fuerzan la compresin del contenido mediante la especificacin de las cabeceras Accept-Encoding y User-Agent con un valor "gzip". Si accedes a tu sitio despus de haber iniciado sesin con una cuenta de administrador, App Engine incluye estadsticas por solicitud en las cabeceras de respuesta. La cabecera X-AppEngine-Estimated-CPM-US-Dollars representa una estimacin del coste de 1.000 solicitudes similares a esta solicitud en dlares estadounidenses. La cabecera X-AppEngine-Resource-Usage representa los recursos utilizados por la solicitud, incluido el tiempo en el servidor, el tiempo de CPU del servidor de aplicaciones y el tiempo de CPU del API (en milisegundos). El periodo de tiempo de las solicitudes Un controlador de solicitudes tiene una cantidad limitada de tiempo para generar y devolver una respuesta a una solicitud, proceso que suele requerir 30 segundos aproximadamente. Transcurrido este tiempo, el controlador de solicitudes se interrumpe. El entorno de tiempo de ejecucin Java interrumpe el servlet con la generacin de una excepcin com.google.apphosting.api.DeadlineExceededException. Si el controlador de solicitudes no detecta esta excepcin, al igual que sucede con todas las excepciones no detectadas, el entorno de tiempo de ejecucin devuelve al cliente un error de servidor HTTP 500. El controlador de solicitudes puede detectar este error para personalizar la respuesta. El entorno de tiempo de ejecucin proporciona al controlador de solicitudes un poco ms de tiempo (menos de un segundo) tras generar la excepcin para preparar una respuesta personalizada. Aunque una solicitud puede tardar hasta 30 segundos en responder, App Engine se ha optimizado para utilizarse con aplicaciones cuyas solicitudes tengan tiempos de respuesta breves, normalmente cientos de milisegundos. Una aplicacin eficiente responde rpidamente a la mayora de las solicitudes. Una aplicacin que no lo es no lograr escalarse con la infraestructura de App Engine.

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

La zona de pruebas A fin de permitir a App Engine distribuir solicitudes para aplicaciones a travs de varios servidores web y evitar que una aplicacin interfiera en otra, la aplicacin se ejecuta en un entorno de zona de pruebas restringido. En este entorno, la aplicacin puede ejecutar datos de consulta, almacenamiento y cdigo en el almacn de datos de App Engine, utilizar los servicios de correo, de extraccin de URL y de usuarios de App Engine, as como examinar las solicitudes web del usuario y preparar la respuesta. Una aplicacin App Engine no puede:

escribir en un sistema de archivos. Las aplicaciones deben utilizar el almacn de datos de App Engine para almacenar los datos permanentes. La lectura desde el sistema de archivos est permitida y todos los archivos de aplicacin subidos con la aplicacin estn disponibles. abrir un socket o acceder a otro host directamente. Una aplicacin puede utilizar el servicio de extraccin de URL de App Engine para realizar solicitudes HTTP y HTTPS a otros hosts en los puertos 80 y 443, respectivamente. generar un proceso secundario o subproceso. El procesamiento de una solicitud web realizada a una aplicacin debe ser un nico proceso que dure unos cuantos segundos. Los procesos que tardan mucho tiempo en responder se finalizan para evitar la sobrecarga del servidor web. realizar otro tipo de llamadas al sistema.

Cadenas Una aplicacin Java no puede crear un nuevo java.lang.ThreadGroup ni un nuevo java.lang.Thread. Estas restricciones tambin son aplicables a las clases JRE que utilizan cadenas. Por ejemplo, una aplicacin no puede crear un nuevo java.util.concurrent.ThreadPoolExecutor ni un java.util.Timer. Una aplicacin puede realizar operaciones relacionadas con la cadena actual como, por ejemplo,Thread.currentThread().dumpStack(). El sistema de archivos

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

Una aplicacin Java no puede utilizar ninguna clase que se utilice para escribir en el sistema de archivos como, por ejemplo, java.io.FileWriter. Una aplicacin puede leer sus propios archivos del sistema de archivos a travs de clases como, por ejemplo, java.io.FileReader. Una aplicacin tambin puede acceder a sus propios archivos como "recursos", como en el caso de Class.getResource() o de ServletContext.getResource(). La aplicacin solo puede acceder a los archivos que se consideran "archivos de recursos" a travs del sistema de archivos. De forma predeterminada, todos los archivos del WAR son "archivos de recursos". Puedes excluir archivos de este conjunto a travs del archivo appengine-web.xml. java.lang.System Se inhabilitan las funciones de la clase java.lang.System que no son aplicables a App Engine. Los siguientes mtodos System no tienen ninguna funcin en App Engine: exit(), gc(), runFinalization() y runFinalizersOnExit(). Los siguientes mtodos System devuelven null: inheritedChannel() y console(). Una aplicacin no puede proporcionar ni invocar de forma directa ningn cdigo JNI nativo. Los siguientes mtodos System generan una excepcin java.lang.SecurityException: load(), loadLibrary() y setSecurityManager(). Reflexin Una aplicacin tiene acceso completo, ilimitado y reflectivo a sus propias clases. Puede realizar la consulta de cualquier miembro privado, utilizar java.lang.reflect.AccessibleObject.setAccessible() y leer/establecer miembros privados. Una aplicacin tambin puede reflejarse en las clases JRE y API como, por ejemplo, String y javax.servlet.http.HttpServletRequest. Sin embargo, solo puede acceder a miembros pblicos de estas clases, no a protegidos ni a privados. Una aplicacin no puede reflejarse en ninguna otra clase que no pertenezca a s misma y no puede utilizar el mtodo setAccessible() para evitar estas restricciones.

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

Carga de clases personalizadas App Engine admite completamente la carga de clases personalizadas. Sin embargo, debes tener en cuenta que App Engine anula todos los ClassLoaders para asignar los mismos permisos a todas las clases cargadas por tu aplicacin. Si realizas una carga de clases personalizadas, ten cuidado al cargar cdigo de terceros que no sean de confianza. Accesos permitidos a la JRE El acceso a las clases de la biblioteca estndar de Java (el entorno de tiempo de ejecucin Java o JRE) se limita a las clases de los accesos permitidos a JRE de App Engine. Acceso Tu aplicacin puede escribir informacin en los registros de la aplicacin a travs de java.util.logging.Logger. Puedes ver y analizar los datos de registro de tu aplicacin con la Consola del administrador o descargarlos mediante appcfg.sh request_logs. La Consola del administrador puede reconocer los niveles de registro de la clase Logger y mostrar mensajes de forma interactiva a diferentes niveles. App Engine detecta y registra en los registros de la aplicacin todo lo que el servlet escriba en el flujo de salida estndar (System.out) y en el flujo de errores estndar (System.err). Las lneas que se escriben en el flujo de salida estndar se registran en el nivel INFO (Informacin) y las que se escriben en el flujo de errores estndar se registran en el nivel WARNING (Advertencia). Puede funcionar cualquier estructura de registro (como, por ejemplo, log4j) que se registre en los flujos de errores o de salida. Sin embargo, para un control ms preciso de la visualizacin del nivel de registro de la Consola del administrador, la estructura de registro debe utilizar un adaptador java.util.logging. import java.util.logging.Logger; // ... public class MyServlet extends HttpServlet { private static final Logger log = Logger.getLogger(MyServlet.class.getName());

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { log.info("An informational message."); log.warning("A warning message."); log.severe("An error message."); } } El SDK Java de App Engine incluye un archivo de plantilla logging.properties en el directorio appengine-java-sdk/config/user/. Para utilizarlo, copia el archivo en tu directorio WEB-INF/classes (o en cualquier otra ubicacin del WAR). A continuacin, copia la propiedad del sistema java.util.logging.config.file en "WEB-INF/classes/logging.Properties (o en cualquier otra ruta asociada al directorio raz de la aplicacin). Puedes establecer las propiedades del sistema en el archivo appengine-web.xml tal y como se muestra a continuacin: <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> ... <system-properties> <property name="java.util.logging.config.file" value="WEBINF/classes/logging.properties" /> </system-properties> </appengine-web-app> El asistente para nuevos proyectos del complemento de Google para Eclipse crea estos archivos de configuracin de registro y los copia en WEBINF/classes/de forma automtica. Para java.util.logging, debes establecer la propiedad del sistema que debe utilizar este archivo.

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

El entorno Todas las propiedades del sistema y variables de entorno son privadas para tu aplicacin. La configuracin de una propiedad del sistema solo afecta a la vista de esa propiedad de tu aplicacin, y no a la vista del JVM. Puedes establecer propiedades del sistema y variables de entorno para tu aplicacin en el descriptor de implementacin. App Engine establece dos propiedades del sistema que identifican el entorno de tiempo de ejecucin: com.google.appengine.runtime.environment es "Production" cuando se ejecuta en App Engine, y "Development" cuando se ejecuta en el servidor de desarrollo. com.google.appengine.runtime.version es el ID de la versin del entorno de tiempo de ejecucin como, por ejemplo, "1.3.0". Adems de utilizar System.getProperty(), puedes acceder a las propiedades del sistema mediante el API de seguridad de tipo. Por ejemplo: if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) { // The app is running on App Engine... } App Engine establece las siguientes propiedades del sistema cuando inicializa el JVM en un servidor de aplicaciones: file.separator path.separator line.separator java.version java.vendor java.vendor.url java.class.version java.specification.version java.specification.vendor java.specification.name java.vm.vendor

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

java.vm.name java.vm.specification.version java.vm.specification.vendor java.vm.specification.name user.dir

Cuotas y lmites Google App Engine asigna recursos a tu aplicacin de forma automtica a medida que el trfico aumenta para que pueda admitir distintas solicitudes al mismo tiempo. No obstante, App Engine se reserva la capacidad de escalado automtica para las aplicaciones con baja latencia, que responden a las solicitudes en menos de un segundo. Las aplicaciones con latencia muy alta (ms de un segundo por solicitud para muchas solicitudes) estn limitadas por el sistema, y requieren una exencin especial con el fin de tener una mayor cantidad de solicitudes dinmicas simultneas. Si es muy necesario que tu aplicacin tenga una gran capacidad para procesar solicitudes de ejecucin con mayor latencia, puedes solicitar una exencin del lmite de solicitudes dinmicas simultneas. La gran mayora de las aplicaciones no requieren ninguna excepcin. Las aplicaciones que estn muy limitadas por la CPU tambin pueden utilizar latencia adicional para compartir de forma eficaz recursos con otras aplicaciones en los mismos servidores. Las solicitudes de archivos estticos estn exentas de estos lmites de latencia. Cada solicitud que recibe la aplicacin se contabiliza en la cuota de solicitudes. Los datos recibidos como parte de una solicitud se contabilizan en la cuota de ancho de banda de entrada (facturable). Los datos enviados en respuesta a una solicitud se contabilizan en la cuota de ancho de banda de salida (facturable). Las solicitudes HTTP y HTTPS (seguras) se contabilizan en las cuotas de solicitudes, ancho de banda de entrada (facturable) y ancho de banda de salida (facturable). En la pgina Detalles de la cuota de la Consola del administrador tambin aparecen las solicitudes seguras, el ancho de banda de entrada seguroy el ancho de banda de salida seguro como valores individuales para fines informativos. Solo las solicitudes HTTPS se contabilizan en estos valores.

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only.

El tiempo de procesamiento de CPU destinado a ejecutar un controlador de solicitudes se contabiliza en la cuota de tiempo de CPU (facturable). Si quieres obtener ms informacin sobre las cuotas, consulta Cuotas y la seccin "Detalles de la cuota" de la Consola del administrador. Adems de las cuotas, los controladores de solicitudes presentan estos lmites: Lmite Valor

tamao de la solicitud

10 megabytes

tamao de la respuesta

10 megabytes

duracin de la solicitud

30 segundos

nmero mximo total de archivos (archivos de aplicacin y estticos)

3.000

tamao mximo de un archivo de aplicacin

10 megabytes

tamao mximo de un archivo esttico

10 megabytes

tamao mximo total de todos los archivos de aplicacin y estticos

150 megabytes

S-ar putea să vă placă și