Интеграция загрузился по этой линии в conf/server.xml
:
<Listener className="org.apache.tomee.loader.OpenEJBListener" />
Это происходит сразу при запуске, прежде чем запущены какие-либо приложения. Библиотеки из каталога <tomcat-home>/webapps/openejb/lib
добавляются в системный загрузчик системы Tomcat, для участия в развертывании установлен другой прослушиватель, и с этого момента все происходит с использованием событий в жизненном цикле Tomcat. Tomcat выдает несколько событий при запуске (развертывании) приложения и завершении работы. Сам Tomcat использует их для развертывания сервлетов, и, по сути, интеграция - это нечто большее. Другие продавцы, которые включают Tomcat, также используют эти крючки. С этой точки зрения интеграция на самом деле довольно скучна :)
Единственный интересный поворот - помещение дополнительных библиотек в военный файл. Это действительно сделано только для того, чтобы доставлять и добавлять дополнительные библиотеки в существующую установку Tomcat как можно проще (и как можно проще удалить). Все библиотеки от <tomcat-home>/webapps/openejb/lib
могут так же легко перейти прямо в <tomcat-home>/lib
. В этот момент, единственное, что вам может понадобиться для войны webapss/openejb/
, - это возможность вызывать EJB через HTTP.
Так короткие ответы:
- Appliction порядок запуска не имеет значения
- EJB Deployment происходит бок о бок с развертыванием Servlet
- баночки добавляются к системе загрузчиком классов Tomcat сразу на Сам Tomcat запускается
Интересно отметить, что в другом ответе Tomcat фактически запускает только два баночки в пути к классам. Сам Tomcat фактически добавляет все банки из <tomcat-home>/lib/
автоматически при запуске. Мы в основном делают то же самое, только от <tomcat-home>/webapps/openejb/lib
Я не думаю, что мы протестировали на самом деле перемещение библиотеки в <tomcat-home>/lib/
и удаление OpenEJB (веб-приложение, которое называется tomee.war
в предстоящем финальном релизе), но я Я сделаю заметку, чтобы попробовать это. Похоже, что хорошо поддерживать или даже делать по умолчанию. Вы можете удалить Tomcat manager и ROOT webapps, так что кажется хорошей идеей упростить удаление openejb.war.
Благодарим за отличный ответ :-) – Parag
Вы упомянули: «В этот момент вам может понадобиться, чтобы webapss/openejb/war for могли вызывать EJB через HTTP». Прошу прощения, если ответ очевиден, но почему мы не сможем обслуживать HTTP-запросы для EJB, если у нас есть все банки openejb в/lib? –
Parag
Что я имел в виду, если бы были перемещены libs и война Webapps/openejb была удалена, тогда функция EJB через HTTP была бы удалена. –