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

Maven: javaee-api vs jboss-javaee-6.0

Мне нужен проект Java JEE6, построенный с помощью maven, и я хочу, чтобы он был стандартным

Итак, я помещаю это в свой pom.xml:

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
</dependency>

Подобный проект предполагается запустить в каждом совместимом контейнере JEE6 (jboss, geronimo, glashfish и т.д.)

Затем, почему эта зависимость jboss существует?

<dependency>
    <groupId>org.jboss.spec</groupId>
    <artifactId>jboss-javaee-6.0</artifactId>
    <version>3.0.2.Final</version>
    <scope>provided</scope>
 </dependency>

Если я использую его, я привязан к jboss, поэтому я могу использовать этот сервер только с этим приложением?

Не рекомендуется ли всегда использовать стандартный javaee-api?

Спасибо!

4b9b3361

Ответ 1

Стандартный api искалечен, i. е. тела метода отсутствуют. Это получается при тестировании. Я однажды столкнулся с этой ловушкой и был не очень доволен этим.

Поэтому рекомендуется использовать другой пакет в качестве ссылки.

Вы можете более подробно рассмотреть Блог Адама Биенса

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

Для проблем с тестированием вы можете посмотреть этот поток.

Edit:
Кстати, теперь это может быть интересно. Эта проблема отсутствует для javaee- (web-) api для Java EE 7 (источник)

Ответ 2

Первое решение с зависимостью java-api - это правильный путь: ваше приложение в идеальном случае не должно заботиться о серверной среде в соответствии с тем, что она работает. Для unit test вы можете использовать Arquillian, что поможет вам протестировать предприятие beans в "домашнем" режиме без головной боли. Если вы используете jboss-javaee, уверены ли вы, что ваше приложение будет развернуто и отлично работать на другом сервере, чем jboss?