Доступ к классу в проекте EJB из проекта War в проекте EAR? - PullRequest
2 голосов
/ 16 октября 2011

Я создаю проект на основе MDB и классов, поддерживающих эти MDB. Мне также нужно использовать ServletContextListener для взаимодействия с юниверсом MDB (подробности ниже), то есть мне нужен проект WAR.

Вопрос: Как ServletContextListener может получить доступ к классу в проекте EJB?

Организация проекта (стандартный проект Eclipse EAR):

Проект EAR есть несколько банок в нем Проект EJB имеет некоторые MDB и множество других классов, используемых MDB Проект WAR имеет ServletContextListener.

Почему я это делаю? Мне нужно начать поток, когда проект начинается. Этому потоку нужен доступ к группе классов, также используемых в MDB.

ПРИМЕЧАНИЕ. Я понимаю, что могу поместить эти общие классы в jar-файл в проекте EAR. Если есть способ сделать это так, чтобы одно затмение «Отладка как» -> «На сервере» было бы хорошим решением. Какое бы решение ни предлагалось, оно должно поддерживать эту отладку на сервере с пошаговой отладкой для всех классов.

ПРИМЕЧАНИЕ 2. Я могу сказать Eclipse, что проект WAR зависит от проекта EJB, который удаляет флаги ошибок Eclipse, но eclipse показывает предупреждение о том, что эта зависимость не будет существовать в развернутом проекте, что означает, что мои классы доступны из WAR не будет создан во время выполнения.

1 Ответ

1 голос
/ 16 октября 2011

При «стандартном» развертывании на сервере Java EE (что означает: с политикой загрузчика классов по умолчанию) классы WAR «видят» все, что находится в EAR, и классы EAR имеют приоритет.

Я могу сказать Eclipse, что проект WAR зависит от проекта EJB

Разве вы не делаете это наоборот?Это проект EAR, который должен иметь ваш проект WAR в разделе «Свойства -> Сборка развертывания».

Еще одна возможность, которая приходит на ум, - это то, что, возможно, вы пытаетесь выполнить развертывание в не Java EEсервер, как Tomcat, который не поддерживает EAR.Возможно, именно поэтому Eclipse говорит, что в развернутом проекте зависимости не будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...