Подтвердить что ты не робот

Maven не распознает EJB как зависимость проекта при попытке определить модуль

Сегодня я обновил свой локальный сервер Glassfish до 3.1.1 при подготовке моей компании к обновлению серверов до той же версии. Я пытаюсь преобразовать проект веб-сервиса, чтобы хорошо играть с новым сервером, и ударил дорожный блок.

В моем pom файле у меня раньше были как webapp, так и ejb, перечисленные как зависимости. В webapp pom у меня был ejb, указанный как зависимость. При попытке развернуть эту конфигурацию в Glassfish 3.1.1, я получил эту ошибку:

Ошибка при развертывании: исключение при развертывании приложения [ухо]: не удается разрешить ссылку Local ejb-ref name = name, Local 3.x interface = interface, ejb-link = null, lookup =, mappedName =, jndi- name=, refType = Session, потому что в приложении с интерфейсом интерфейса есть 2 ejbs. Некоторые из возможных причин: 1. Класс EJB bean был упакован в библиотеку ушных библиотек (или через любой другой библиотечный механизм, который делает библиотеку видимой для всех компонентных модулей), что делает все компонентные модули такими bean класса косвенно. 2. Класс EJB bean был упакован в компонентный модуль, который ссылается на EJB, прямо или косвенно через Manifest, WEB-INF/lib. Класс EJB bean должен быть упакован только в модуле объявления ejb, а не в ссылочных модулях. Модули ссылок должны включать только интерфейсы EJB.. Пожалуйста, смотрите server.log fo... msg.seeServerLog

По сути, я считаю, что это говорит о том, что, поскольку у меня есть EJB, указанный как зависимость в двух разных областях, Glassfish 3.1.1 не знает, какую зависимость искать. Это не было проблемой в 2.1.1. Из-за этого я удалил зависимость в ухе, видя, что это все равно будет частью эффективного слуха уха.

Однако теперь, когда ухо генерирует файл application.xml, он опускает всю информацию ejb из файла. Я могу развернуть приложение только сейчас, но когда я пытаюсь запустить что-либо, я получаю NameNotFoundExceptions относительно ejbs.

Я попытался вручную добавить модули ejb в ушной микрофон с тегом, но когда я пытаюсь построить проект, я получаю сообщение об ошибке:

Артефакт [ejb] не является зависимостью проекта.

Это несмотря на то, что, когда я смотрю на эффективный pom для уха, я вижу, что ejb указан как зависимость.

Как я могу правильно сгенерировать файл application.xml, все еще совместив с более жестким набором правил Glassfish 3.1.1?

Сообщите мне, если вам нужна дополнительная информация, и спасибо за помощь!

4b9b3361

Ответ 1

Ответ оказался довольно простым, и я немного на него напал. В файле webapp pom мне просто нужно добавить строку области действия к зависимости ejb:

<dependency>
    <groupId>com.groupId</groupId>
    <artifactId>webservice-service-ejbs</artifactId>
    <version>${project.version}</version>
    <type>ejb</type>
    <scope>provided</scope>
</dependency>

С этим я мог бы поддерживать зависимость ejb в ушной pom, application.xml, сгенерированной должным образом, и Glassfish 3.1.1 не путался, думая, что существует несколько классов ejb с тем же именем.

EDIT: вот что выглядит зависимость ejb в ушной pom

<dependency>
    <groupId>com.groupId</groupId>
    <artifactId>webservice-service-ejbs</artifactId>
    <type>ejb</type>
</dependency>

Спасибо тем, кто помог мне.