2013-08-14 10 views
5

Rozumiem, że Websphere 8.0.0.6 używa implementacji Apache Wink dla JAX-RS 1.1.Implementacja JAX-RS w Websphere 8.0.0.6

Zastanawiam się, jakiej wersji Apache Wink używa?

Ponadto, jeśli potrzebowałem używać Apache CXF, czy po prostu pakuję słoiki CXF z moją wojną?

również implementacje co robi Websphere 8.0.0.6 korzystanie z CDI (Weld 2.x ??), Bean Validation (??), JPA (??), JAXB (??) itp ..

Odpowiedz

6

WAS v8.0.0.x wykorzystuje własną zmodyfikowaną wersję Wink v1.1 inkubację. Jeśli przejdziesz do {WAS_HOME}/wtyczek, zobaczysz .jar o nazwie com.ibm.ws.jaxrs.jar. Jeśli przejrzysz MANIFEST w obrębie tego artefaktu, zobaczysz, że zmodyfikowany przez IBM Wink v1.1-inkubuje i tworzy swój własny wer. 1.1.1. Będziesz chciał użyć tej wersji, ponieważ zawiera ona serwer-wink-jcdi. W przeciwnym razie nie możesz wstrzyknąć EJB do swoich zasobów Wink, co stwarza wiele irytujących problemów. Generalnie nie lubię kłaniać się do rozwiązania specyficznego dla dostawcy, ale w tym przypadku będziesz chciał użyć implementacji Wink firmy IBM. Połączyłem serwer wink-jcdi z v1.2-incubating do v1.1-incubating z tymczasowym sukcesem (uzyskałem funkcję jcdi do działania, ale potem, bez ustalonej przyczyny głównej, straciłem kilka późniejszych wdrożeń). Więc zaoszczędź sobie mnóstwo frustracji i użyj implementacji Wink IMB. Implementacja Wink firmy IBM będzie dostępna dla aplikacji za pośrednictwem artefaktu związanego z OSGi, niezależnie od tego, czy ustawisz politykę klasy ładujących na PARENT_FIRST, czy PARENT_LAST. Podejrzewam, że to błąd. Będziesz także musiał dołączyć artefakt com.ibm.ws.prereq.jaxrs.jar do swojego projektu.

W web.xml, użyj następującej konfiguracji:

<!-- 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> 

Według IBM's own WAS v8.0 video on JAX-RS Twoja podklasa Zastosowanie dostanie automatycznie rozpoznawany przez rozszerzenie klasy aplikacji i adnotacji ApplicationPath. Nie o to chodzi. Musisz określić swoją podklasę aplikacji w pliku web.xml. Jednak zauważysz, że konsola poinformuje cię, że użyto domyślnej aplikacji Wink. To nieprawda. Twoja klasa zostanie pobrana i będziesz musiał zastąpić metodę getClasses i zarejestrować swoich Dostawców, Zasoby itp. To zachowanie zostało zaobserwowane i dokładnie przetestowane jak na WAS v8.0.0.8.

Możesz wypróbować CXF w WAS 8 jako alternatywę.

Podobnie jak Geronimo i TomEE, WAS jest zbudowany na produktach Apache. Mogę się mylić, ale ostatnio pamiętam, WAS v8.0 używa Apache OpenWebBeans v1.0, Apache BVal v1.0, Apache OpenJPA v2.1.2-SNAPSHOT. Nie jestem pewien co do JAXB, ale myślę, że używają one własnej struktury json4j. Używam MOXy z zaskakująco dużym sukcesem.

+0

Dzięki. Widać wszystkie wersje z 'unzip -p /opt/IBM/WebSphere/AppServer/plugins/com.ibm.ws.prereq.jaxrs.jar META-INF/MANIFEST.MF' – DarVar

+0

Użyłem CXF od 2017 na WAS 8 i zadziałało (bo napisałeś: "Możesz wypróbować CXF w WAS 8, ale najprawdopodobniej napotkasz problemy."_) Ale bardzo pouczające publikowanie – aliopi

+0

@aliopi - Dzięki. Dobrze wiedzieć Wydaje mi się, że wpadłem na problemy z klasą, kiedy próbowałem użyć CXF do aplikacji internetowej na WAS 8 lat temu, ale napotkałem pewne problemy, i dlatego napisałem Słyszałem/czytałem, że możesz pracować nad tym CXF. –

1

Ty można uzyskać szczegółowy raport na temat wersji składników, uruchamiając skrypt versionInfo znajdujący się w katalogu WAS_HOME/bin. Na przykład, dla Linux:

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

wersje specyfikacji są wymienione w Specifications and API documentation

+0

Masz raport o wersji, ale nie podaje żadnych szczegółów dotyczących implementacji lub specyfikacji JEE6? – DarVar

+0

Nie mam WAS 8.0 pod ręką. Wersja WAX 7.0 JAXB na przykład jest odzwierciedlana jako składnik bundle.fp.jaxb. Zaktualizowałem odpowiedź linkiem, w którym podano wszystkie wersje specyfikacji dla WAS 8.0 – fnt