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?
Спасибо!
Ответы
Ответ 1
Стандартный api искалечен, i. е. тела метода отсутствуют. Это получается при тестировании. Я однажды столкнулся с этой ловушкой и был не очень доволен этим.
Поэтому рекомендуется использовать другой пакет в качестве ссылки.
Вы можете более подробно рассмотреть Блог Адама Биенса
Вы также можете создавать профили для разных сред развертывания, если это вам действительно нужно. Однако, по сути, я согласен, это, к сожалению, не очень приятное обстоятельство.
Для проблем с тестированием вы можете посмотреть этот поток.
Edit:
Кстати, теперь это может быть интересно. Эта проблема отсутствует для javaee- (web-) api для Java EE 7 (источник)
Ответ 2
Первое решение с зависимостью java-api - это правильный путь: ваше приложение в идеальном случае не должно заботиться о серверной среде в соответствии с тем, что она работает. Для unit test вы можете использовать Arquillian, что поможет вам протестировать предприятие beans в "домашнем" режиме без головной боли. Если вы используете jboss-javaee, уверены ли вы, что ваше приложение будет развернуто и отлично работать на другом сервере, чем jboss?