domingo, 15 de febrero de 2009

Como hospedar Aplicaciones Java Web Start en Google App Engine


Estaba buscando donde hospedar un par de demos Java Web Start y finalmente recordé que tenía una cuenta de Google App Engine, así que me puse a investigar como hospedar allí los archivos JNLP y JAR de mis aplicaciones.

Hacerlo no resulta obvio, pues Google App Engine no ofrece un acceso de tipo FTP o un upload de archivos via web. La manera de hacerlo es sincronizando una aplicación Python local con los servidores de Google utilizando el utilitario appcfg.py update path/nombre_aplicacion_local, y la forma de subir los contenidos estáticos es incluirlos como parte de la aplicación Python y configurar la aplicación para servir contenidos estáticos e incluir una definición del MIME type para los archivos JNLP, de manera que sean bien interpretados por los navegadores (IE 7 despliega el contenido del archivo JNLP en vez de lanzar la aplicación, si el servidor no está configurado con el tipo JNLP entre los tipos servidos).

La solución final fue esta (creo que hay otras, pero esta fue la que me funcionó y no quise gastar más tiempo en investigar ;D):

- Creé dos subdirectorios como parte de una aplicación Python, en la ruta demos en mi copia local de Google App Engine... los llamé /exec y /jfx

- En el directorio /jfx copié los archivos JNLP

- En el directorio /exec copié los archivos JAR con mis aplicaciones JWS

- Luego, configuré el archivo app.yaml en el raíz de mi aplicación Python, de la siguiente manera:

application: javafxdemo
version: 3
runtime: python
api_version: 1

handlers:
- url: /exec
static_dir: exec

- url: /jfx
static_dir: jfx
mime_type: application/x-java-jnlp-file

- url: .*
script: javafxdemo.py

Finalmente, ejecuté el comando: appcfg.py update demos\javafxdemo ... que sincronizó el directorio local con la aplicación en Google App Engine.

Previamente modifiqué los archivos JNLP, de manera de explicitar que los archivos JNLP y los JAR están en directorios separados. Así que alteré las siguientes líneas:

<jnlp spec="1.0+" codebase=
"http://javafxdemo.appspot.com/"
href="jfx/Knob.jnlp">


...

<jar href="exec/Knob.jar" main="true"/>

Espero que les sirva este dato (por lo menos me servirá de ayuda-memoria la próxima)... o que me digan donde puedo hospedar (gratuítamente) contenidos estáticos sin tanto jaleo! jaja! y con 10GB de tráfico de salida gratuito ;D

Saludos.

No hay comentarios: