Adnotacje zasobów w serwletach działają tylko z Java 8, a nie z Java 11 na serwerze Tomcat 8

0

Pytanie

Stworzyłem serwer HTTP, który realizuje MessageListener i podłącza się do systemu MQ na podstawie JMS z pomocą javax.jms.ConnectionFactoy.

Fabryka związków wprowadza się do serwletu za pomocą adnotacji zasobu.

@Resource(name = "jms/ConnectionFactory")
private ConnectionFactory connectionFactory;

Zasób jest określona w context.xml plik konfiguracyjny.

Co przeżyłem, to to, że podczas kompilacji serwletu za pomocą Java 11, adnotacje javax.Zasób po prostu ignorowane, podczas gdy ja jeszcze mogę szukać zasób na podstawie jego nazwy bezpośrednio w kontekście. Ale kiedy компилирую go za pomocą Java 8, zasób wprowadza w аннотированное polu serwletu.

Czy ktoś może to wyjaśnić?

Innym momencie polega na tym, że przestrzeń nazw javax zamiana przestrzeni nazw jakarate przy przejściu z Java EE Jakarta EE. Duża część bibliotek JMS nadal realizowane z wykorzystaniem interfejsu javax.jms.*, takich jak ConnectionFactory, kolei itp.

Czy ma ktoś doświadczenie w tym, jak wygląda kompatybilność, czy konieczna jest ponowna implementacja bibliotek JMS?

annotations java servlets tomcat8
2021-11-23 12:23:33
1

Najlepsza odpowiedź

0

tl;dr

Dla wdrażania Java 11 użyj Tomcat 10.1.x, nazewnictwo pakietów Jakarta EE API serwletów 6 i API wiadomości Jakarta 3.1.

Starsze wersje mogą również pracować na Java 11, ale te wersje stworzone specjalnie dla Java 11 jako minimalne wymagania.

Ta kombinacja, najprawdopodobniej, będzie działać jak na Java 17, jak i w Javie 11. Java 17 to najnowsza wersja długoterminowego wsparcia (LTS). Chociaż wsparcie oficjalnie nie jest wymagane w Jakarta EE, różne polecenia, wygląda na to, dążą do tego, aby ich najnowsze wersje dobrze pracowali na Java 17.

Użyj Tomcat w wersji 10.1 dla Java 11

Według wersji Apache Tomcat, wersja 10.1 Tomcat obsługuje Java 11, podczas gdy w wersji 9 i 10.0 ukierunkowane na Java 8.

Nazwa pakietu

Trzeba będzie zmienić import wniosku od javax.*przesyłka w jakarta.*. Ta zmiana w nazewnictwie pakietów wiąże się z przejściem od Oracle do Eclipse Foundation jako wykonawców technologii Jakarta EE (dawniej Java EE).

API serwletów

Przełącz się na odpowiednią wersję API serwletów, wersja 6. Cm.stronę Specyfikacji serwletów.

API wiadomości

Należy pamiętać, że JMS stała się systemem wymiany wiadomości w Dżakarcie. Trzeba będzie dostosować swój import instrukcje i numer wersji, odpowiednio. Cm.strony specyfikacji.

Podobnie zaktualizuj swoją realizację wiadomości w Dżakarcie.

2021-11-23 17:47:04

Wersja Tomcat obsługują "każdy stabilną Java, spełniający wymagania ". Oznacza to, że operator może bezpiecznie korzystać z Tomcat 9 z 11 Java, aż jego ulubione realizacji JMS nie przełączy się na JMS 3.0.
Piotr P. Karwasz

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................