2013-08-14 21 views
5

Comprendo Websphere 8.0.0.6 utilizza l'implementazione Apache Wink per JAX-RS 1.1.Implementazione JAX-RS su Websphere 8.0.0.6

Mi chiedo quale versione di Apache Wink usa?

Inoltre, se avessi bisogno di usare Apache CXF faccio semplicemente unire i barattoli CXF con la mia guerra?

anche ciò che fa implementazioni Websphere 8.0.0.6 uso per il CDI (Weld 2.x ??), Bean Validation (??), JPA (??), JAXB (??), ecc ..

risposta

6

ERA v8.0.0.x utilizza essa la propria versione modificata di Wink v1.1-incubazione. Se navighi su {WAS_HOME}/plugins, vedrai un file .jar denominato com.ibm.ws.jaxrs.jar. Se esplori il MANIFEST all'interno di tale artefatto, vedrai che IBM ha modificato l'incubazione di Wink v1.1 e creato la propria v1.1.1. Ti consigliamo di utilizzare questa versione, perché incorpora wink-jcdi-server. Altrimenti, non puoi iniettare il tuo EJB nelle tue Wink Resources, il che crea una serie di fastidiosi problemi. Generalmente non mi piace intrecciare me stesso a una soluzione specifica del fornitore, ma in questo caso, vorrai utilizzare l'implementazione di Wink di IBM. Ho backportato wink-jcdi-server da v1.2-incubating to v1.1-incubazione con successo temporaneo (ho ottenuto il funzionamento di jcdi per funzionare, ma poi, senza una causa root determinata, ho perso alcune distribuzioni in seguito). Quindi, risparmia tonnellate di frustrazione e usa l'implementazione di Wink di IMB. L'implementazione di Wink di IBM sarà esposta alla tua app, tramite un artefatto correlato a OSGi, indipendentemente dal fatto che imposti la politica del classloader su PARENT_FIRST o PARENT_LAST. Sospetto che sia un bug. Dovrai anche includere l'artefatto com.ibm.ws.prereq.jaxrs.jar nel tuo progetto.

in web.xml, utilizzare la seguente configurazione:

<!-- Wink Servlet --> 
<servlet> 
    <description>JAX-RS Tools Generated - Do not modify</description> 
    <servlet-name>JAX-RS Servlet</servlet-name> 
    <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class> 
    <init-param> 
     <param-name>javax.ws.rs.Application</param-name> 
     <param-value>com.company.webservices.config.WinkApplication</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    <enabled>true</enabled> 
    <async-supported>false</async-supported> 
</servlet> 

<!-- Wink Servlet Mapping --> 
<servlet-mapping> 
    <servlet-name>JAX-RS Servlet</servlet-name> 
    <url-pattern>/resources/*</url-pattern> 
</servlet-mapping> 

Secondo IBM's own WAS v8.0 video on JAX-RS, la sottoclasse applicazione otterrà automaticamente riconosciuto estendendo la classe Application e l'annotazione ApplicationPath. Questo non è il caso. Devi specificare la sottoclasse Application in web.xml. Tuttavia, noterai che la console ti dirà che è stata utilizzata l'applicazione Wink predefinita. Questo è falso. Il tuo corso verrà prelevato e dovrai sovrascrivere il metodo getClasses e registrare i tuoi fornitori, risorse, ecc. Questo comportamento è stato osservato e accuratamente testato a partire da WAS v8.0.0.8.

Si potrebbe provare CXF in WAS 8 come alternativa.

Come Geronimo e TomEE, WAS è basato sui prodotti Apache. Potrei sbagliarmi, ma, per ultima cosa ricordo, WAS v8.0 utilizza Apache OpenWebBeans v1.0, Apache BVal v1.0, Apache OpenJPA v2.1.2-SNAPSHOT. Non sono sicuro di JAXB, ma penso che utilizzino il proprio framework json4j. Io uso MOXy con sorprendentemente molto successo.

+0

Grazie. Puoi vedere tutte le versioni con 'unzip -p /opt/IBM/WebSphere/AppServer/plugins/com.ibm.ws.prereq.jaxrs.jar META-INF/MANIFEST.MF' – DarVar

+0

Ho usato CXF dal 2017 su un WAS 8 e ha funzionato (perché hai scritto _ "Potresti provare CXF in WAS 8, ma probabilmente ti imbatterai in problemi."_) Ma molto informativo postazione – aliopi

+0

@aliopi - Grazie. Buono a sapersi.Penso di aver incontrato problemi con il classloader quando stavo tentando di usare CXF per un'applicazione web su WAS 8 anni fa, ma ho riscontrato alcuni problemi, motivo per cui ho scritto Ho sentito/letto che potresti far funzionare CXF su di esso, modificherò la mia risposta. –

1

È può ottenere un rapporto dettagliato sulle versioni dei componenti eseguendo lo script versionInfo situato nella directory WAS_HOME/bin. Ad esempio, per Linux:

./versionInfo.sh -file versionReport.txt -maintenancePackages -componentDetail 

versioni specifiche sono elencati alla Specifications and API documentation

+0

Ottenuto il rapporto sulla versione ma non fornisce dettagli sulle implementazioni o specifiche di JEE6 supportate? – DarVar

+0

Non ho WAS 8.0 a portata di mano. Con la versione di JAXB di WAS 7.0, ad esempio, si riflette come componente bundle.fp.jaxb. Ho aggiornato la risposta con il collegamento in cui sono specificate tutte le versioni specifiche per WAS 8.0 – fnt