tomcat osgi equinox apache-felix

tomcat - Problemas para entender todo el sistema web ecológico OSGi



equinox apache-felix (2)

Jens,

Como tengo cierta experiencia con OSGi, realmente no te sugiero que comiences con OSGi simple.

Comience con Eclipse RCP (Rich Client Platform) en su lugar.

No solo obtendrá un tiempo de ejecución de OSGi, sino un IDE integrado con todas las características si descarga Eclipse IDE para la edición RCP y RAP Developers aquí .

Por suerte para todos nosotros, puede obtener el libro Eclipse Rich Client Platform (2da Edición) que fue lanzado recientemente hace solo unos meses y contiene información / guía actualizada sobre Eclipse RCP.

OSGi es la base fundamental de Eclipse RCP; sin embargo, OSGi en sí mismo es confuso y aburrido (al menos para los principiantes). Ponerse al día con Eclipse RCP es mucho más fácil y divertido, puede crear una aplicación funcional de "hacer algo" en cuestión de horas.

Con OSGi simple, ya tendrías suerte si puedes deshacerte de las excepciones de ClassNotFound en los primeros días.

Después de un tiempo con Eclipse RCP, "convierta" su aplicación a Eclipse RAP para ejecutarla como una aplicación web en un contenedor de servlets de Java. A ver si te gusta, incluso si no lo haces ... para entonces ya habrías comprendido los conceptos y prácticas de OSGi de que navegar a "OSGi simple" sería un poco más suave que si hubieras empezado desde cero.

Buena suerte Jens!

PD: También escribo sobre esto en mi blog Java EE , aunque no siempre específicamente en OSGi.

Soy bastante nuevo en el mundo de Java y OSGi y tengo problemas para entender el sistema ecológico de una aplicación web OSGi.

Para ser más preciso, por el momento estoy tratando de comprender cómo todas las partes del ecosistema están relacionadas entre sí:

  • Marco OSGi (por ejemplo, Apache Felix, Equinox, Knoplerfish)
  • OSGi Runtime (por ejemplo, Spring DM Server, Pax Runner, Apache Karaf)
  • Web Extender (por ejemplo, Pax Web Extender, Spring Web Extender)
  • Contenedor web (por ejemplo, Apache Tomcat, Jetty)

Para darte una representación visual de mi comprensión real de su relación, mira esta imagen:

texto alternativo http://img253.imageshack.us/img253/1631/osgiwebenvironmentschem.png

Por lo que sé, el OSGi Framework es una implementación de la especificación OSGi. El tiempo de ejecución es una distribución que agrega funcionalidad adicional sobre la especificación OSGi, como el registro, por ejemplo. Dado que parece haber algunas diferencias en el mecanismo classpath de OSGi y contenedores web como Tomcat, necesitas algún tipo de traductor. Esta parte es manejada por el "Web Extender".

¿Podría aclarar todo esto por mí? ¿Estoy entendiendo todo correcto?


OSGi es un estándar en términos de API y empaque para módulos de software interactivos. Esto es similar a otros estándares API como JPA o Java EE.

Un tiempo de ejecución OSGi es un servidor que sigue el estándar OSGi, es una implementación del estándar. Mencionas algunos comunes: Knopflerfish, Eqinox. Estos le permiten ejecutar paquetes OSGi.

Un contenedor web generalmente se refiere a una implementación de las partes específicas de la web de Java EE (servlets). El estándar de servlet también define una API y un paquete, al igual que OSGi, solo diferentes.

Necesita un servidor para ejecutar sus aplicaciones web Java EE. Usted empaqueta su aplicación como un Java Web Archive (WAR) y le pide al servidor de su aplicación que la inicie. Hay varios servidores, como usted menciona, como Tomcat, Jetty, pero también servidores más grandes que cubren partes más grandes del estándar Java EE, como Glassfish y JBoss.

Un extensor web intenta unificar el estándar de servlet con OSGi. Al agregar algunos datos específicos de OSGi a su WAR ya empaquetado, WAR se analizará automáticamente y se iniciará con el tiempo de ejecución de OSGi. Los servlets WAR se publicarán en el servicio http OSGi mediante el extensor web. Con un extensor web, puede ejecutar tanto aplicaciones OSGi estándar como WAR utilizando solo un tiempo de ejecución OSGi, sin la necesidad de un servidor compatible con Java EE como Tomcat.