Struts en Google AppEngine

Este martes Google anunció la incorporación de Java a su “plataforma de desarrollo” (por llamarlo de alguna forma), AppEngine. En realidad en su máquina virtual pueden correr otros lenguajes, como Groovy, JRuby (y por tanto Rails) o Scala.
Por desgracia, y es que no todo iban a ser buenas noticias, tiene algunas limitaciones. Al no disponer de una base de datos relacional, no se pueden usar JDBC o Hibernate (al menos de forma directa), no soporta JNDI, JMX, EJBs… más info.
En cuanto al framework web, Google barre para casa y ofrece GWT, descartando el soporte para otros como Struts. Sin embargo en principio y viendo las características del entorno no parecía ser por razones técnicas. Y como veremos ahora, efectivamente es posible usar Struts en GAE.
Para ello primero debemos seguir las instrucciones de instalación del SDK, tarea sencilla si lo hacemos a través del plugin para Eclipse. Una vez instalado, pinchamos sobre
para crear un nuevo proyecto. Deseleccionamos “GWT” y dejamos marcada la casilla del SDK. Debería quedarnos un proyecto con una estructura como la siguiente:

Como vemos, nos añade unas cuantas librerías que forman parte del SDK. Lo que haremos ahora será añadir las que necesita Struts, las copiamos en el directorio lib y las incluimos en el build path:

En este punto hay que tener cuidado y fijarse en los jar que añade el SDK. El que a mí me dió problemas es el commons-logging, incluido en el SDK con la versión 1.1.1. Si copiamos esa misma versión en nuestro lib, al hacer el deploy la sobreescribirá y obtendremos una bonita excepción (el jar suministrado por el SDK no es el mismo que podemos obtener de Apache y sustituye algunas clases por otras propias de Google). La solución fácil y rápida, aunque chapucera, es añadir una versión diferente (la 1.0.4 en mi caso).
Una vez lo tengamos todo listo, simplemente se configura la aplicación como una aplicación Struts normal y corriente.




Desde que vi ayer tu tweeteo tenía ganas de saber como había ido la cosa. Muy interesante. Me tiene especialmente preocupado BigTable, parece que falla bastante.
Ramón Antonio Parada
9 Abril, 2009 a 16:59
Ya vi que lo comentabas ayer, yo todavía no lo he probado… a ver si estos días tengo algo de tiempo. Igual son problemas de lanzamiento, no sé.
adrian
9 Abril, 2009 a 17:07
Muy bueno tu artículo, me ha inspirado y he conseguido hacer funcionar Struts 2 .
Mira mi articulo : http://guevoneandojava.blogspot.com/2009/04/struts-2-en-google-app-engine.html
Por si te hace falta, es posible que tengas que habilitar las sesiones en el engine, porque por defecto están deshabilitadas.
guevonaso
26 Abril, 2009 a 19:42
Gracias por el comentario y el enlace
Es cierto lo de las sesiones, todavía no me ha dado tiempo a “jugar” demasiado con App Engine, pero sí me he topado con el tema ése. A ver si algún comento algunas cosas “más de código” que pueden dar la lata en GAE.
adrian
27 Abril, 2009 a 07:43
[...] de Google, parece que en general los frameworks web van funcionando… Después de ver cómo hacer funcionar Struts en AppEngine, ahora le toca el turno a [...]
Wicket en Google App Engine « AOWS
14 Mayo, 2009 a 23:15