La integración se bootstrap a través de esta línea en el conf/server.xml
:
<Listener className="org.apache.tomee.loader.OpenEJBListener" />
Esto sucede inmediatamente durante el inicio antes de iniciar cualquier aplicación. Las bibliotecas del directorio <tomcat-home>/webapps/openejb/lib
se agregan al cargador de clases del sistema Tomcat, se instala otro detector para participar en la implementación y, a partir de ese momento, todo sucede usando eventos en el ciclo de vida de Tomcat. Tomcat emitirá varios eventos al inicio de la aplicación (implementación) y apagado. Tomcat los usa para el despliegue de servlets y esencialmente la integración es más de lo mismo. Otros proveedores que incluyen Tomcat también usan estos ganchos. Desde esa perspectiva, la integración es realmente bastante aburrida :)
El único giro interesante es colocar las bibliotecas adicionales en un archivo war. Eso solo se hace para que la entrega y la adición de las bibliotecas adicionales a una instalación existente de Tomcat sea lo más fácil posible (y lo más fácil posible de eliminar). Todas las bibliotecas de <tomcat-home>/webapps/openejb/lib
podrían simplemente ir a la derecha en <tomcat-home>/lib
. En ese momento, lo único que le puede interesar a la guerra webapss/openejb/
es poder invocar EJB a través de HTTP.
Así las respuestas cortas son: orden de inicio
- Appliction no importa
- EJB despliegue pasa de lado a lado con el despliegue de servlets
- tarros se agregan al sistema de cargador de clases Tomcat inmediatamente Tomcat en sí se inicia
Lo interesante a tener en cuenta en la otra respuesta es que Tomcat en realidad se inicia con solo dos jarras en el classpath. Tomcat en realidad agrega todos los jarrones de <tomcat-home>/lib/
automáticamente al inicio. Básicamente estamos haciendo lo mismo, sólo de <tomcat-home>/webapps/openejb/lib
No creo que realmente hemos probado mover las bibliotecas en <tomcat-home>/lib/
y eliminar la aplicación web openejb (que se llama tomee.war
en la versión final que viene), pero Haré una nota para probar eso. Parece una buena cosa para apoyar o incluso hacer por defecto. Puede eliminar el administrador de Tomcat y las aplicaciones de Internet ROOT, por lo que parece una buena idea facilitar también la eliminación de openejb.war.
Gracias por la increíble respuesta :-) – Parag
Usted menciona 'En ese momento, lo único que puede desear para el webapss/openejb/war es poder invocar EJB sobre HTTP.' Lo siento si la respuesta es obvia, pero ¿por qué no podríamos atender solicitudes de HTTP para EJB si tenemos todas las jarras abiertas en/lib? –
Parag
Lo que quise decir es que si se movieron las bibliotecas y se eliminó la guerra de webapps/openejb, entonces se eliminaría la funcionalidad de EJB sobre HTTP. –