2013-03-20 23 views
13

chcę projektu Java JEE6 zbudowany z maven, i chcę go standardowyMaven: JavaEE-api vs jboss-JavaEE-6,0

Więc ja kładę to w moim pom.xml:

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

projekt tak, to ma działać w każdym kontenerze JEE6 kompatybilny (JBoss, Geronimo, glashfish itp)

Następnie, dlaczego ten JBoss zależność istnieje?

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

Jeśli używam tego, czy jestem związany z jboss, więc mogę używać tego serwera tylko z tą aplikacją?

Czy nie zaleca się używania standardowego interfejsu javaee-api?

Dziękujemy!

Odpowiedz

19

Standardowy api jest uszkodzony, i. mi. brakuje ciał metod. Okazuje się, że podczas testowania. Raz spotkałem się z tą pułapką i nie byłem z niej bardzo zadowolony.

Dlatego zaleca się użycie innego opakowania jako odniesienia.

Można mieć bliżej na Adam Biens Blog

Można również tworzyć profile dla różnych środowiskach programowych, jeśli naprawdę potrzebujesz. Jednak zasadniczo zgadzam się, to niestety nie jest bardzo przyjemna okoliczność.

Aby mieć problemy z testowaniem, możesz rzucić okiem na this thread.

Edytuj:
Przy okazji, ponieważ teraz może to zainteresować. Ten problem jest już do javaee- (WEB-) API dla Java EE 7 (source)

+4

Uwaga: zależności "org.jboss.spec" to tylko zależności API. W żaden sposób nie wiążą cię z platformami JBoss. –

+0

Dla przyszłego odniesienia - Poniższy błąd występuje bardzo często w tym paradoksie. 'java.lang.ClassFormatError: Absent Code attribute w metodzie, która nie jest natywna lub abstrakcyjna w pliku klasowym' –

2

Pierwsze rozwiązanie z uzależnieniem java-API jest właściwa droga: aplikacja w idealnym przypadku nie powinien być pod opieką o serwerze środowisko pod tym, co działa. Do testu jednostkowego można użyć narzędzia Arquillian, które pomaga przetestować komponenty przedsiębiorstwa w "domu" bez bólu głowy. Jeśli używasz jboss-javaee, czy jesteś pewien, że twoja aplikacja zostanie wdrożona i działa dobrze na innym serwerze, niż jboss?