Cocoon | ||
---|---|---|
Información general | ||
Tipo de programa | Desarrollo Java | |
Desarrollador | Apache Software Foundation | |
Lanzamiento inicial | 20 de febrero de 2006 | |
Licencia | Apache License | |
Información técnica | ||
Programado en | Java | |
Plataformas admitidas | máquina virtual Java | |
Versiones | ||
Última versión estable | 2.2.0 ( 15 de mayo de 2008) | |
Enlaces | ||
Apache Cocoon, usualmente llamado simplemente Cocoon, es un framework para aplicaciones web construido en torno a los conceptos de pipeline, encapsulación y desarrollo de aplicaciones web basado en componentes. El framework se enfoca en la publicación pasada en XML y XSLT, habiendo sido construido en el lenguaje de programación Java. La flexibilidad lograda basándose fundamentalmente en XML permite la rápida publicación de contenidos en una variedad de formatos, entre los que se incluyen HTML, PDF y WML. Los sistemas de gestión de contenidos Apache Lenya y Daisy han sido creados sobre la base de este framework. Cocoon también se usa con frecuencia como herramienta ETL de almacén de datos o como middleware para el transporte de datos entre diferentes sistemas.
El sitemap constituye el núcleo de Cocoon. Es aquí donde el desarrollador del sitio web configura las diferentes componentes de Cocoon y define las interacciones cliente–servidor en lo que Cocoon denomina pipelines.
Las componentes de Cocoon se agrupan por función.
Se denominan matchers las componentes responsables de hallar correspondencias o calces entre elementos de una petición, tales como URLs o cookies, y patrones de búsqueda tipo wildcard o regular expression. Cada petición se somete a los matchers definidos en el sitemap hasta encontrar una correspondencia. Es dentro de un matcher donde se especifica la respuesta a una petición determinada.
Los generadores crean un flujo de datos para su procesamiento ulterior. Este flujo puede generarse a partir de un documento XML existente o bien existen generadores capaces de generar XML original para representar algo existente en el servidor, como por ejemplo una estructura de directorios o datos gráficos.
Un tipo específico de generador es una XML Server Page (XSP [1]), es decir, un documento XML que contiene directivas basadas en tags que especifican como generar contenido dinámico al momento de la petición. Después de procesadas por Cocoon, estas directivas han sido reemplazadas por contenidos generados, de modo que el documento XML aumentado resultante puede ser objeto de procesamientos ulteriores (típicamente una transformación XSLT). Las XSP se transforman en productores de Cocoon, típicamente como clases de Java, aunque también podría usarse un lenguaje de scripting para el que exista un procesador basado en Java.
Las directivas pueden ser ya sea tags predefinidos ("XSP") o bien tags definidos por el propio usuario, definiéndose ambos tipos en los llamados logicsheets. Los tags se definen por medio de plantillas XSLT que describen como estos tags (representados como nodos XML) se transformarán en otros nodos XML o en código procedimental, como por ejemplo en código Java. Los tags se usan para incrustar la lógica procedimental, sustituir expresiones, consultar informaciones del entorno del servidor web, así como otras operaciones.
Nótese que XSP ha sido declarado obsoleto en versiones recientes de Cocoon.
Los transformadores reciben un flujo de datos y lo cambian de alguna manera. Las transformaciones más comunes se realizan por medio de XSLT para cambiar los datos de un formato XML a otro. Pero también existen transformadores que reciben otros tipos de datos (por ejemplo, comandos SQL).
Un serializador transforma un flujo de eventos XML en una secuencia de bytes (como por ejemplo HTML) que pueda constituir la respuesta al cliente. Existen serializadores que permiten enviar los datos en gran variedad de formatos, entre los que se incluyen HTML, XHTML, PDF, RTF, SVG, WML y texto simple, por ejemplo.
Los selectors ofrecen la misma funcionalidad que una sentencia de switch. Son capaces de seleccionar determinados elementos de una petición y elegir la segmentación apropiada que se usará.
Las vistas se usan principalmente para realizar pruebas. Una vista es una punta "lateral" de salida en una pipeline. Es posible hacer salir el flujo XML producido hasta este punto. Así se puede verificar que la aplicación esté funcionando correctamente.
Los lectores publican contenidos sin analizarlos sintácticamente (sin procesamiento XML). Se usan para imágenes y contenidos similares.
Las acciones son clases Java que ejecutan alguna lógica de negocio o administran la producción de nuevos contenidos.
Una pipeline se emplea para especificar como deberán interactuar las diferentes componentes de Cocoon con una petición dada para producir una respuesta a la salida. Una segmentación típica consiste en un generador, seguido por cero o más transformadores y finalmente un serializador.