# Apache Geronimo

Apache Geronimo es un servidor de aplicaciones de código abierto desarrollado por la Apache Software Foundation y distribuido bajo la licencia Apache. Geronimo 2 es actualmente compatible con las especificaciones de Java Enterprise Edition (Java EE) 5.0 tales como JDBC, RMI, correo electrónico, JMS, servicios web, XML, Enterprise JavaBeans, Connectors, servlets, portlets y JavaServer Pages. Esto permite a los desarrolladores crear aplicaciones empresariales que son portables y escalables, y que se integran con las tecnologías existentes. Geronimo 3 es compatible con Java EE 6.0.
IBM ha proporcionado un considerable apoyo al proyecto a través de marketing, contribuciones de código y la financiación de varios committers del proyecto. En octubre de 2005, IBM anunció una edición gratuita de su servidor de aplicaciones WebSphere llamada Websphere Application Server Community Edition, que está basada en Geronimo. Otros de sus partidarios comerciales son: AMD, Chariot Solutions, Simula Labs y Virtuas.

## Componentes

Al igual que un sistema operativo de empresa, Geronimo se basa en un núcleo, un micronúcleo que sienta las bases para todo lo que está sobre él. El núcleo de Geronimo es agnóstico de Java EE. Su única finalidad es la gestión de los bloques de construcción de Geronimo. Geronimo se caracteriza por un diseño arquitectónico que se basa en el concepto de Inversión de control (IoC) (a veces llamado Inyección de dependencias), lo que significa que el núcleo no tiene dependencia directa de cualquiera de sus componentes. El núcleo es un framework para los servicios que controla el ciclo de vida y el registro. El núcleo está basado en Java EE. Funciona con los servicios y componentes de Java EE para construir configuraciones específicas, una de las cuales es una pila de soluciones de Java EE completa.
La mayoría de los servicios de Geronimo son añadidos y configurados a través de GBeans para convertirse en una parte del servidor de aplicaciones en conjunto. Un GBean es la interfaz que conecta el componente con el núcleo. Cada GBean puede mantener estado, depender de e interrelacionarse con otros GBeans, y operar en los eventos del núcleo y de otros GBeans. La interfaz de GBeans permite alternar entre dos contenedores de servlets, por ejemplo Jetty o Tomcat, sin afectar a toda la arquitectura usando una interfaz de GBeans. Esta arquitectura flexible permite a los desarrolladores de Geronimo integrar varios proyectos de software de código abierto existentes probados en el campo.
Aquí una lista de los componentes de código abierto que se incluyen en el proyecto Geronimo.
| Componente | Descripción |
| Apache Tomcat | Servidor HTTP y contenedor de servlets compatible con Java Servlet 2.5 y JavaServer Pages (JSP) 2.1. |
| Jetty | Servidor HTTP y contenedor de servlets compatible con Java Servlet 2.5 y JavaServer Pages 2.1 - una alternativa al servidor Tomcat. |
| Apache ActiveMQ | Proveedor de aplicaciones Java Message Service (JMS) 1.1 de código abierto y soporta beans controlados por mensajes (MDBs). |
| Apache OpenEJB | Sistema de contenedores de Enterprise JavaBeans (EJB) de código abierto y servidor de EJB que soporta Enterprise JavaBeans de nivel 3.0, incluyendo Container Managed Persistence 2 (CMP2) y EJB Query Language (EJBQL). |
| Apache OpenJPA | Implementación de la Java Persistence API (JPA) 1.0 de código abierto. |
| Apache ServiceMix | Enterprise Service Bus (ESB) de código abierto y suite de componentes basada en el estándar Java Business Integration (JBI) en JSR 208. |
| Apache Axis y Apache Scout | Axis es una implementación del protocolo SOAP (Simple Object Access Protocol), mientras que Scout es una implementación del JSR 93 (JAXR). Estos proveen soporte para servicios web y Web Services Interoperability Organization (WS-I) Basic Profile. |
| Apache CXF | Frameworks de servicios web con gran variedad de protocolos como SOAP, XML/HTTP, RESTful HTTP o CORBA y trabaja sobre una variedad de transportes como HTTP, JMS o JBI. |
| Apache Derby | Sistema de gestión de bases de datos relacionales (RDBMS) completo con soporte de Java Database Connectivity (JDBC) nativo. |
| Apache WADI | Solución de cluster, equilibrado de carga y tolerancia a fallos para el nivel de contenedor de aplicación web. (El proyecto se encuentra actualmente en incubación en la Apache Incubator). |
| MX4J | Java Management Extensions que proporciona herramientas para gestionar y monitorizar aplicaciones, objetos del sistema, dispositivos y redes orientadas a servicios. |