Appfuse 1.9.x to Appfuse 2.x

Matt Raible debe estar orgulloso aunque repleto de trabajo. Su QuickStart de portales, Appfuse, se ha hecho un lavado de cara (de bueno a mejor). Hace relativamente poco tiempo a abierto la versión 2.x y planea una release para este Febrero de 2007. Muchas son las nuevas features(http://www.appfuse.org/display/APF/Home), aunque destaco jdk 5.0, maven 2, annotations, jsp 2.0, servlet 3.4 y todo lo que esto conlleva... mejora en la gestión de librerías, mantenimiento simplificado, mejora en la adaptación a nuevas versiones, etc.
Bueno he sacado 15 minutos para probarlo ya que todas las listas de distribución están que arden con appfuse 2 y siguiendo los siempre buenos manuales y la quickstart de su Web... estos son mis pasos y mis resultados:
Pasos:
1) Leo http://www.appfuse.org/display/APF/AppFuse+QuickStart. 2) Tengo preparado una consola con la JDK 5 en el path. 3) No tengo instaldo MySQL 5.x (suelo trabajar con oracle..... pero esta vez vamos a tirar con MySql. Lo tengo bajado de la Web. Sigo los pasos de instalación. Si cambias password de root, encoding, etc.. tendrás que modificar posteriormente las properties del pom.xml . 4) SMTP server no instalo de momento. Puedo usar el de ISS de Windows o me bajo un server que indica en el quickstart (Facilisimo de instalar) 5) Tengo en la consola en el path también Maven 2.0.4. 6) El quickstart dice que "AppFuse comes in a number of different flavors". Esto es me bajo una distribución según la framework que busque en este caso Struts 2.0 e Hibernate 3 (simples, sencillas y potentísimas).
Por lo tanto, llamo a maven de las siguiente forma: mvn archetype:create -DarchetypeGroupId=org.appfuse -DarchetypeArtifactId=appfuse-basic-struts -DremoteRepositories=http://static.appfuse.org/repository -DarchetypeVersion=1.0-m2 -DgroupId=com.dk-DartifactId=myProjectDK
Va todo bien, que bueno!!!
8) Pruebo a ver si mysql está accesible. Abro la consola. Me autentifico (root/). Como no se bien la sintaxis de mysql (Busco un link que me guía: http://www.badopi.org/node/738)
show databases; (mysql tira, están las bases de datos iniciales)
9) mvn jetty:run war
Ouch!! Algo falla!!!! DBUnit no puede hacer el Clean_intert. Es algo relacionado con la base de datos que no puede hacer insert de las rows de prueba. Entro en MySql
show databases; (está appfuse) connect appfuse; show tables; (Ouch mensaje "Empty set"--- vamos que no hay tablas creadas)
Las tablas las crea appfuse automaticamente.... mmmm ¿será un bug?. Miro las issues de appfuse ------------------------------------------------------------------------------------------ There is an issue in M2 where the dbunit plugin fires before the hibernate3 plugin sometimes:
http://issues.appfuse.org/browse/APF-606
The fix is to change the <phase> of the hbm2ddl goal to execute in the "process-test-resources" phase (instead of test-compile). ------------------------------------------------------------------------------------------ Por lo visto a veces da este fallo al estar conectado por algún proxy (mi caso). No se han completado las fases de maven
10) Modifico el pom.xml como las issue indica
11) Modifico si es el caso alguna property del pom.xml si cambié algo de la configuración de mysql.
12) mvn jetty:run war
procesando procesando......... [MqH] DEBUG [btpool0-3] UserAction.edit(100) checking for remember me login...
Habro firefox y http://localhost:8080/.
Maravilloso el plugin de jetty que me ha cargado un tomcat con la aplicación y con el explorador veo el portal básico de appfuse.
¡¡¡Perfecto prueba completada!!!!
Resultados:
1) En 15 minutos (tenía preparado JDK, Maven y MySql bajado) está corriendo Appfuse. 2) El bug ya está corregido en la M3... aun no estoy seguro si es un bug o un fallo mio o del proxy o de lared... el caso es que surgio el error y está contemplado. 3) Un gran trabajo de nuevo de Matt Raible y su comunidad Appfuse. 4) Parece mejor el modo de trabajo de la 2.x que la 1.9.x (ant, ....)
Mis conclusiones son simples porque queda probar a ampliar la funcionad de la aplicación generada con el quickStart y ver de verdad que aporta y que mejora esta nueva versión a su antecesora. Esto para otro día., aunque por mi experiencia con AppFuse estoy seguro de que serán buenas noticias. Appfuse 1.9.x aporta muchísimas ventajas en el desarrollo de portales basados en tecnología J2ee .

Appfuse ¿Qué es? ¿Cómo abordarlo?

AppFuse
https://appfuse.dev.java.net/

¿Qué es?
Como bien dice su creador Matt Raible, es una aplicación que aporta el "kickstarting" en el desarrollo de aplicaciones Web.

Con más palabras ¿Qué es?
Appfuse es un compendio de frameworks basadas en Java y Open Source que mediante la ejecución de una serie de scripts parametrizados en Ant (Appfuse 1.x) o Maven (Appfuse 2.x), te genera un proyecto Web con las características más básicas (gestión de usuarios, gestión de
roles, autentificación...). Es muy sencillo trabajar con este proyecto para personalizarlo y ampliarlo, ya que está realizado con una buena arquitectura y completamente basado en java sin frameworks propietarias.

¿Qué nos aporta?
1) Comenzar un portal Web tecnología Java con poco esfuerzo.
2) Utilización de frameworks y tecnologías novedosas , completas e interesantes (struts, hibernate, spring,....)
3) Comunidad appfusera que ayuda en los primeros pasos, problemáticas con el quickstart, etc..
4) Estandarización en la manera de trabajar.
5) ...

Versiones

Appfuse está trabajando en dos versiones en paralelo actualmente, son semejantes, su finalidad es la misma: La version 1.x y la version 2.x.
La diferencia principal es en el modo de trabajo ya que de usar "ant" como herramienta para generar portates (mediante scripts), pasa a maven 2 que aporta muchas capacidades en la gestión librerías,actualizaciones, integración, etc...


En el momento que se escribe este documento nos vamos a basar en la versión 1.x ya que appfuse 2.x no está en una versión estable.


¿Cómo abordar Appfuse?

1) Echar un vistazo a la home de proyecto appfuse 1.x. Con esto te haces una idea de los frameworks en las que se basa Appfuse, la evolución entre versiones, ver alguna demo, etc...
Project Home
https://appfuse.dev.java.net/

2) Echar un vistazo a este artículo:
http://www-128.ibm.com/developerworks/java/library/j-appfuse/
Comenta en líneas generales la arquitectura Appfuse y 7 razones para usar este proyecto para generar aplicaciones Web.

3) Bajar una versión 1.9.4 de appfuse, por ejemlo, la que utiliza las frameworks struts-spring-hibernate, las más generalistas en desarrollo javaWeb. Fichero appfuse-1.9.4-src.zip.

https://appfuse.dev.java.net/files/documents/1397/42844/appfuse-1.9.4-src.zip

La Project Download Home es
https://appfuse.dev.java.net/servlets/ProjectDocumentList

4)Echar un vistazo a la web de la versión 1.9.4. Hay demos, videos,
artículos,... https://appfuse.dev.java.net/servlets/NewsItemView?newsItemID=4305

5) Comenzar a preparar el entorno para desarrollar con Appfuse. Todas las guías están en una wiki http://raibledesigns.com/wiki/

5.a) Hacer el quick start. http://raibledesigns.com/wiki/AppFuseQuickStart.html
5.b) Hacer los tutoriales.
http://raibledesigns.com/wiki/Wiki.jsp?page=CreateDAO y los siguentes
4.

Nota. La base de datos que utiliza por defecto es MySql. Se puede utilzar cualquier otra. Para cambiar la BD y otros cambios que te surgan (dudas, etc...) existe una sección en la wiki llamada "related hows to" que comentan soluciones para mil cosas (desplegar en OAS,
utilizar eclipse, otras bases de datos,........)
http://raibledesigns.com/wiki/Wiki.jsp?page=Articles

6) Una vez echo el tutorial... ya puedes empezar a desarrollar con está metodología, participar en el proyecto appfuse y colaborar (dudas, sugerencias, problemas,...) en la lista de distribución


No solo aprendes a trabajar con Appfuse sino a ponerte al día en varias frameworks muy potentes y con una metodología bastante secilla y simple.

Suerte!

Web 2.0

[Buena|Curiosa|Entretenida] explicación Web 2.0