Используйте только JSR api в моем pom.xml

Что ж, я пытаюсь следовать Oracle JSR и использовать в своем проекте только спецификации. Я использую JBOSS EAP 7 в качестве серверного приложения.

1) В моем проекте есть зависимость от спящего режима:

 <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${hibernate.core.version}</version>
        </dependency>

Это правильный способ следовать спецификации (JSR)? Или я должен просто установить зависимость JPA без какой-либо зависимости от спящего режима и позволить jboss позаботиться об этом?

2) Другой пример: я использую CDI, и в моем проекте WELD используется как реализация CDI:

 <dependency>
            <groupId>org.jboss.weld</groupId>
            <artifactId>weld-core-jsf</artifactId>
            <version>2.3.3.Final</version>
        </dependency>

Должен ли я заменить его зависимостью CDI-API и позволить jboss позаботиться о реализации?

Как правильно следовать JSR и отказаться от реализаций?


person Ronaldo Lanhellas    schedule 06.10.2017    source источник
comment
По моему мнению, для настойчивости следует использовать JPA. Таким образом, вам просто нужно определить jpa зависимость в вашем проекте и не нужно определять hibernate зависимость, если вы развертываете приложение в jboss as7. Вот как jboss as7 обнаруживает jpa - JPA use is detected (e.g. persistence.xml or @PersistenceContext/Unit annotations) and injects Hibernate dependencies into the application deployment. Дополнительные сведения можно найти здесь   -  person Rishikesh Darandale    schedule 06.10.2017
comment
Я хочу, чтобы pom был развернут во многих серверных приложениях (JBoss, glassfish ...)   -  person Ronaldo Lanhellas    schedule 06.10.2017
comment
В этом случае вам нужно будет добавить jpa provider реализацию и исключить обнаружение jpa (во время развертывания) в случае jboss as7.   -  person Rishikesh Darandale    schedule 06.10.2017


Ответы (1)


Я не использовал JBoss EAP 7; но из своего списка функций он должен реализовывать полный профиль Java EE 7. Если это так, все, что вам нужно, это следующая зависимость Maven:

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

Это должно работать, пока вы развертываете свое приложение на одном из полнофункциональных серверов приложений (Wildfly / JBoss, Glassfish, Websphere, ...), которые поддерживают Java EE 7.

person ujulu    schedule 07.10.2017
comment
Очень полезно. Таким образом я создаю помпу независимо от контейнера. - person Ronaldo Lanhellas; 07.10.2017