2013-03-20 8 views
13

Voglio un progetto Java JEE6 costruito con Maven, e lo voglio serieMaven: JavaEE-VS API jboss-JavaEE-6.0

Così, ho messo nel mio pom.xml:

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

un progetto come questo, si suppone per l'esecuzione in ogni contenitore JEE6 compatibile (JBoss, Geronimo, glashfish, etc.)

Quindi, il motivo per cui esiste questa dipendenza jboss?

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

Se lo uso, Sono legato a JBoss quindi posso usare solo questo server con questa applicazione?

Non è preferibile utilizzare sempre lo standard javaee-api?

Grazie!

risposta

19

L'API standard è azzoppata, i. e. mancano i corpi dei metodi. Questo risulta quando si esegue il test. Una volta mi sono imbattuto in questa trappola e non ne ero molto contento.

Pertanto è consigliabile utilizzare un altro pacchetto come riferimento.

si può avere una visione completa di Adam Biens Blog

È inoltre possibile effettuare profili per diversi ambienti di distribuzione, se si ha realmente bisogno. Tuttavia, in sostanza sono d'accordo, purtroppo non è una circostanza molto piacevole.

Per problemi con i test, è possibile dare un'occhiata a this thread.

Modifica:
A proposito, dal momento che questo potrebbe essere interessante. Questo problema è andato per l'API javaee- (web-) per Java EE 7 (source)

+4

Nota le dipendenze 'org.jboss.spec' sono solo le dipendenze API. Non ti legano in alcun modo alle piattaforme di JBoss. –

+0

Per riferimento futuro - Il seguente errore si verifica molto frequentemente con questo paradosso. 'java.lang.ClassFormatError: attributo di codice assente nel metodo che non è nativo o astratto nel file di classe' –

2

La prima soluzione alla dipendenza java-API è la strada giusta: l'applicazione in caso ideale non dovrebbe essere a cuore di server ambiente sotto quello che funziona. Per il test dell'unità è possibile utilizzare Arquillian, che consente di testare i bean enterprise in "casa" senza mal di testa. Se stai usando jboss-javaee, sei sicuro che la tua applicazione verrà implementata e funzionerà bene su un altro server, rispetto a jboss?