Buenas, he tenido estas últimas semanas mucho (pero mucho) trabajo y no he podido añadir nada nuevo al blog por falta de tiempo. La noticia java durante este tiempo ha sido (a parte de la compra de Sun por parte de Oracle) el hecho de que google haya dado soporte Java en su engine además de python.
La noticia es genial para todos los que queríamos hacer una aplicación web pública sin costes y sin tener que depender de PHP. El servicio puede hacerse de pago, puesto que la version gratuita tiene una serie de limitaciones de ancho de banda y consumo de CPU, pero sin publicidad incluida.
Pero yo no quería hablar de las bondades del servicio de google, si no de como poder utilizar algún framework dentro de este. Casi a la vez que salió la noticia he encotrado varios sitios hablando del tema, enumero aqui :
Y mi aportación a este mundo es recoger esta informacion y explicar en cuatro pasos simples el hola mundo de Struts 2. No se hasta que punto funcionará todo, pero por probar que no quede.
Asumo que ya se ha configurado eclipse y habeis hecho el primer "Hola Mundo" usando el AppEngine SDK.
Una vez tenemos nuestra aplicación de pruebas funcionando, pasamos al siguiente paso, nos bajamos las librerias de struts. Las podemos encontrar en la página oficial o usando maven. Yo me las he descargado a mano, la versión que contiene solo los jar necesarios y la que contiene las applicaciones de ejemplo (llamada struts-2.1.6.apps.zip ).
Mi intención es simplemente ejecutar el "HelloWorld", por lo que descomprimo el helloworld.war.
El siguiente paso es tan simple como copiar las librerias en la carpeta "lib" y modificar el web.xml añadiendo el filtro de Struts, los JSPs de ejemplo y las clases de ejemplo y los XML que la aplicacion a mi proyecto creado con eclipse.
La estructura del proyecto eclipse queda algo tal y como se muestra en la imagen a continuacion.
Si tal y como tenemos el proyecto ahora mismo, la aplicación falla. Nos provocará un error provocado por las restricciones que el engine de google ha introducido en su máquina virtual y que hacen incompatible el funcionamiento por defecto del OGNL. La solución la he encontrado en uno de los enlaces anteriores que me ha llevado a esta entrada de un foro. En ella se describe que la solución es muy simple, crear un listener que nos permita configurar la gestión de seguridad de OGNL.
El codigo del listener sería:
public class InitListener implements
ServletContextListener
{
public InitListener()
{ }
public void
contextInitialized(ServletContextEvent sce)
{
OgnlRuntime.setSecurityManager(null);
}
// El resto de metodos necesarios se dejan vacios.
Incluimos el listener en el web.xml :
<web-app>
<!-— El filtro de struts 2 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>es.guevonaso.InitListener</listener-class>
</listener>
<servlet>
<servlet-name>guevonaso</servlet-name>
<servlet-class>es.guevonaso.guevonasoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>guevonaso</servlet-name>
<url-pattern>/guevonaso</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
Una vez funcionando nos mostrará un mensaje de error de que las sesiones no están configuradas. Para eso solo debemos de modificar el fichero appengine-web.xml y añadir el parámetro "sessions-enabled":
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>guevonaso</application>
<version>1</version>
<!-- Configure java.util.logging -->
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
</system-properties>
<sessions-enabled>true</sessions-enabled>
</appengine-web-app>
Y listo, esto nos permite tener un hola mundo empleando struts 2. Ahora es cosa de verificar hasta que punto podemos usar esta librería.
Mientras tanto, el codigo de este ejemplo lo podéis encontrar donde siempre en http://code.google.com/p/guevonaso-codes/, con la salvedad de que no he subido los ficheros binarios "JAR", de la carpeta "lib". Y la aplicación de pruebas esta en :
http://guevonaso.appspot.com/example
- El ejemplo de un formulario
- Hola mundo