Sí amigos, Struts no está muerto, quizás superado, pero no muerto. Y como las cosas son así, hoy vamos a aprender (a la velocidad del galgo) como “montárnoslo” para servir feeds RSS desde nuestras acciones Struts utilizando la librería RomeRSS.
¿Para qué qerríamos hacer esto en lugar de servir los RSS a través de un Servlet específico? Sencillo. Para reaprovechar toda la infraestructura que tengamos montada para nuestra aplicación: superclases Action con comportamiento común, una cadena de filtros de preprocesado, etc, etc.
Mejor con un ejemplo. Vamos a procurar hacer las cosas de manera correcta, así que vamos a encapsular el uso de RomeRSS en una clase RSSFeeder
para desacoplar nuestra aplicación de la librería. Algo así…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
|
No me paro en la generación del feed. Quién tenga interés por saber como se trabaja con RomeRSS puede echarle un ojo a su wiki.
Ahora nuestra acción de Struts…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
BaseAction
es una clase plantilla que contiene código centralizado para la gestión de errores y otras cosas (el comportamiento común, vamos). Sus hijas sólo implementan el método doExecute
que contiene la “chicha” de la acción.
Por último, el mapping en el satánico struts-config.xml
.
1 2 3 |
|
Listo. Tras el churro de código, la explicación. El secreto del éxito de esta empresa es romper el ciclo normal de Struts de petición, acción y forward/redirect (las acciones suelen devolver un objeto ActionForward
). Para ello, nuestro feeder escribe directamente en el Writer
de salida del servlet y nuestra acción devuelve un mágico null
.
Y no lo olvidéis: si esto fuera un código de verdad: ¡¡COMENTARIOS!!
Lo sentimos, pero los comentarios están cerrados
HOLA.. disculpa estoy trantando de implemetar el servicio RSS.
Pero me sale el siguiente error:java.lang.NoClassDefFoundError: com/sun/syndication/feed/synd/SyndFeed
De antemano gracias!!