2012-04-18 7 views
7

Я понимаю, что Apache TomEE - это обычная установка Tomcat с openejb в качестве веб-приложения.Что такое рабочий процесс для запуска и настройки приложения при использовании Apache TomEE

Я пытаюсь понять, как все эти бутстрапы. Я постараюсь задать несколько вопросов:

  • Важно ли иметь приказ на запуск приложения? Должен ли openejb запускаться перед моим веб-приложением или наоборот, или это не имеет значения?
  • Связано с более ранним вопросом. Как корпоративное приложение регистрирует свои bean-компоненты с openejb, или это то, что openejb обошел охоту для корпоративных приложений на одном сервере, для EJB?
  • На уровне непрофессионалов, как они могли предоставить openejb в качестве контейнера EJB, когда это другое веб-приложение. (IIRC каждый webapp в Tomcat получает другой класс и не может наступать друг на друга)

Любая другая важная информация.

ответ

8

Интеграция загрузился по этой линии в 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.

+0

Благодарим за отличный ответ :-) – Parag

+0

Вы упомянули: «В этот момент вам может понадобиться, чтобы webapss/openejb/war for могли вызывать EJB через HTTP». Прошу прощения, если ответ очевиден, но почему мы не сможем обслуживать HTTP-запросы для EJB, если у нас есть все банки openejb в /lib? – Parag

+0

Что я имел в виду, если бы были перемещены libs и война Webapps/openejb была удалена, тогда функция EJB через HTTP была бы удалена. –